第8章 GitHub にリポジトリを公開する¶
この章で学ぶこと¶
GitHub アカウントの確認
gh repo createでリモートリポジトリを作るgit pushでローカル → GitHub に送るブラウザで確認
動機・背景¶
ここまでで ~/my-scripts のローカルリポジトリには、README、.gitignore、いくつかのコミットが蓄積されました。しかし、このままでは「自分のこの PC でしか使えない」「PC が壊れたらすべて消える」「同僚やコミュニティに見せられない」という状態です。せっかく履歴を残しても、ローカルだけに置いておくのはバックアップとしても共有手段としても不十分です。
GitHub にリポジトリをアップロード (プッシュ) すれば、クラウド上に常に最新の履歴が保管され、別の PC からクローンして作業を続けたり、URL を共有してレビューを受けたりできるようになります。バックアップと共有という 2 つの課題が、たった数コマンドで一度に解決します。
アカウントを準備する¶
注釈
https://github.com/ でアカウント作成 (まだの場合)。第3章で gh auth login を済ませている前提。gh auth status で確認できます。
gh repo create でリモート作成¶
cd ~/my-scripts
gh repo create --source=. --private --remote=origin
各フラグの意味は次のとおりです。
--source=.: カレントディレクトリのローカルリポジトリを使う--private: プライベートリポジトリで作成--remote=origin: リモート名をoriginで登録
期待出力例:
✓ Created repository <your-id>/my-scripts on GitHub
✓ Added remote https://github.com/<your-id>/my-scripts.git
リモートが登録されたか確認¶
git remote -v
期待出力:
origin https://github.com/<your-id>/my-scripts.git (fetch)
origin https://github.com/<your-id>/my-scripts.git (push)
初回プッシュ¶
git push -u origin main
期待出力 (一部):
Enumerating objects: ...
Writing objects: 100% (...)
To https://github.com/<your-id>/my-scripts.git
* [new branch] main -> main
branch 'main' set up to track 'origin/main'.
注釈
-u フラグは「ローカルの main をリモート origin/main と紐付ける」設定。次回以降は git push だけで OK になります。
ブラウザで確認¶
gh browse
このコマンドを実行すると、既定のブラウザで GitHub 上のリポジトリページが自動的に開きます。プッシュした内容が実際に反映されているかを目視で確認しましょう。
確認すべきこと:
README.mdの内容が表示されている.gitignoreがある.envが表示されていない (除外できている)コミット履歴が見える
警告
ブラウザで .env が見えてしまったら、即座に対処が必要です。付録 B 「秘匿情報を誤コミットしてしまった場合」を参照。
private vs public の選び方¶
種類 |
公開範囲 |
おすすめのケース |
|---|---|---|
|
自分 + 招待した人 |
業務スクリプト、個人用、機密性のあるもの |
|
全世界 |
OSS として公開、ポートフォリオ、教材 |
Tip
最初は --private で作成し、公開する自信が付いたタイミングで Settings から public に変えるのが安全です (gh repo edit --visibility public でも変更可)。
ハンズオン課題¶
リモートが正しく
originという名前で登録されたかgit remote -vで確認ブラウザでリポジトリページを開き、
.envが見えないことを確認README.mdに 1 行追加してコミットし、git push(今度は-u不要) で反映、ブラウザで確認
まとめ¶
gh repo create --source=. --private --remote=originで 1 コマンド作成初回
git push -u origin main、以降はgit pushだけ.envがリモートにも無いことを必ず確認