【Git】ローカルで作成したリポジトリを GitHub に Push する【GitHub】
はじめに
開発で Git を使用する場合、既に GitHub などにあるリモートリポジトリをローカルにクローンするケースがほとんどではないでしょうか。
かくいう僕もその一人で、プロジェクトに参画したときには既にリモートリポジトリが存在し、クローンしてブランチを作成して開発を始める経験しかありませんでした。
しかし、例えば個人開発などでは、とりあえずローカルで開発を始めてみて、良さそうだったら GitHub でリポジトリを管理するというケースもあると思います。
もちろん先に GitHub にリポジトリを作って、それをクローンしてイチから開発を始める方法もありますが、継続して開発するかどうか分からない段階でリモートリポジトリを作るのはちょっと抵抗があります。
というわけで、今回はローカルで作成した Git リポジトリを GitHub で管理し始める (初めて Push するまでの) 手順についてまとめました。
動作環境
OS | Version |
---|---|
Windows 10 Pro | 1909 |
Application | Version |
---|---|
PowerShell | 5.1.18362.752 |
Git | 2.26.0 |
Hosting Service |
---|
GitHub |
前提
- ローカルマシンに Git をインストール済み
- ローカルマシンに Git リポジトリ (ローカルリポジトリ) を作成済み
- ローカルの Git リポジトリには master ブランチが存在する
- GitHub にアカウントを作成済み
- GitHub への SSH 接続が可能 (SSH 接続の設定済み)
Git のインストールや GitHub への SSH 接続については、別記事を参照ください。
リモートリポジトリ (GitHub)
Git リポジトリ作成
リポジトリの作成については、 GitHub ヘルプに詳細な手順が記載されているので、そちらをご覧ください。
リポジトリ名はローカルリポジトリの名前と同じにする必要はありませんが、揃えておいた方が分かりやすいと思います。
作成時の注意
リポジトリ作成画面に Skip this step if you’re importing an existing repository.
とある通り、既に存在する Git リポジトリ をインポート (ローカルからの Push 含む) する場合は、赤枠内の各項目はいずれも作成しません。
Initialize this repository with a README
- ここにチェックを入れると
README.md
が作成される
- ここにチェックを入れると
Add .gitignore
None
以外を選択した場合、.gitignore
ファイルが作成される
Add a license
None
以外を選択した場合、LICENSE
ファイルが作成される
一つでも作成すると、リポジトリ作成と同時に master ブランチが作成されてしまい、ローカルにある master ブランチとのマージが難しくなります。 (マージができないわけではありません)
リモート URL を確認
作成したリポジトリのページに記載されているリモート URL を確認します。
上の画像はデータ転送プロトコルが SSH ですが、 HTTPS も使用できます。
ローカルリポジトリ
リモートリポジトリの作成を行ったら、次にローカルの Git リポジトリ内で以下の作業を行います。
リモートリポジトリを追加
ローカルリポジトリに GitHub で作成したリモートリポジトリを追加します。
git remote add origin git@github.com:hrgm/about-hrgm.git
リモートリポジトリの追加については、こちらも GitHub ヘルプに詳細が記載されています。
git remote add コマンド
git remote add [remote_name] [remote_url]
Argument | Description |
---|---|
[remote_name] | リモートリポジトリ名 (一般的には origin がよくつかわれる) |
[github_remote_url] | リモート URL (GitHub の場合は SSH か HTTPS の URL を使用する) |
ローカルの Git の Config へ remote_name という名前で リモート URL (remote_url) を追加する。
リモートリポジトリへ Push
追加したリモートリポジトリへ、ローカルリポジトリのブランチを Push します。
git push origin master
Push 後に GitHub のリポジトリを見ると、ブランチが登録されているのが確認できます。
リモートリポジトリへの Push についても、 GitHub ヘルプに詳しい記載があります。
リモートリポジトリへ Push を行うと、ローカルリポジトリにリモート追跡ブランチ (origin/[remote_branch_name]
) が作成されます。
git push コマンド
git push [remote_name] [local_branch_name]:[remote_branch_name]
Argument | Description |
---|---|
[remote_name] | リモートリポジトリ名 |
[local_branch_name] | ローカルブランチ名 |
[remote_branch_name] | リモートブランチ名 (省略した場合、ローカルブランチ名と同じになる) |
リモートリポジトリ (remote_name) のリモートブランチ (remote_branch_name) へ、ローカルブランチ (local_branch_name) を Push する。
上流ブランチの設定
リモートリポジトリへ Push しただけでは、リモート追跡ブランチが作成されても、ローカルリポジトリのブランチに上流ブランチとしては設定されません。
以下のコマンドで上流ブランチを設定する必要があります。
git branch master --set-upstream-to=origin/master
上流ブランチを設定することで、 git push
, git merge
, git pull
を行う際の引数 (リモートリポジトリやブランチ名の指定) を省略できるようになります。
git branch コマンド (--set-upstream-to オプション)
git branch [local_branch_name] --set-upstream-to=[remote_name]/[remote_branch_name]
Argument | Description |
---|---|
[local_branch_name] | ローカルブランチ名 |
[remote_name] | リモートリポジトリ名 |
[remote_branch_name] | リモートブランチ名 |
ローカルブランチ (local_branch_name) に、リモート追跡ブランチ (remote_name/remote_branch_name) を上流ブランチとして設定する。
Push と上流ブランチの設定を同時に行う
上記では説明のために Push と上流ブランチの設定を順に分けて行いましたが、 git push
コマンドの -u
オプションを使用すると、ローカルブランチの Push を行うと同時に、リモート追跡ブランチをローカルブランチの上流ブランチとして設定することができます。
git push -u origin master
GitHub で新規に空のリポジトリを作成すると、リポジトリのページに簡単な説明とこのコマンドが記載されています。
Git に慣れてきたら、ローカルリポジトリ発のブランチをリモートリポジトリに Push する際は、こちらのコマンドを使用することが多くなると思います。
おわりに
今回は GitHub を使用したリモートリポジトリへの Push を説明しましたが、基本的な考え方は GitLab などの他の Git ホスティングサービスであっても変わりません。
Subversion と違って Git は初期の学習ハードルがやや高いところがありますが、この辺りは使っていくうちにどんどん理解が進んでいくはずなので、めげずに使い続ければ、いつか目の前がパァーっと開ける日がやってきます。
まぁ、僕は半年くらいかかりましたけどねー!