カテゴリー
コンピューター

【Git】クローンしたリポジトリの master 以外のブランチを追跡する方法

リポジトリをクローンすると、HEAD は master を指しています。他のローカルのブランチは、ありません。

実際に作業をするときは、master ではないブランチから始めたい、そんなことがよくありますの。

この場合、作業を開始したいコミットへチェックアウトして、ブランチを作成してそのブランチへチェックアウトすることになりますわ。

その手順をまとめます。

コマンドまとめ

# リモートリポジトリのブランチが指す場所にチェックアウト
git checkout <remote>/<branch>
# ブランチを作成してチェックアウト
git checkout -b <branch>

# リモートリポジトリのブランチが指す場所に新しくブランチを作成してチェックアウト
git checkout -b <branch> --track <remote>/<branch>

# <remote>/<branch> の <branch> と同じ名前を付ける場合は次で OK
git checkout --track <remote>/<branch>

実践

作業前の確認

リモートリポジトリをクローンした直後から始まります。

$ git log --all --decorate --graph --oneline
* 4173e3c (origin/feature1) AAA機能を修正、BBB機能を追加する
* 561ab33 AAA機能を追加する
* ef0d189 (HEAD -> master, origin/master, origin/HEAD) 安定板1
* b4bf0eb 初期コミット

やり方 1. チェックアウト、ブランチ作成を 2 回のコマンドに分けて行う。

$ git checkout origin/feature1
Checking out files: 100% (43/43), done.
Note: checking out 'origin/feature1'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:

  git checkout -b <new-branch-name>

HEAD is now at 4173e3c... AAA機能を修正、BBB機能を追加する

$ git checkout -b feature1
Switched to a new branch 'feature1'

やり方 2. チェックアウト、ブランチ作成を 1 回のコマンドで行う

$ git checkout -b feature1 --track origin/feature1
Branch feature1 set up to track remote branch feature1 from origin.
Switched to a new branch 'feature1'

または、

$ git checkout --track origin/feature1
Checking out files: 100% (43/43), done.
Branch feature1 set up to track remote branch feature1 from origin.
Switched to a new branch 'feature1'

作業後の確認

$ git log --all --decorate --graph --oneline
* 4173e3c (HEAD -> feature1, origin/feature1) AAA機能を修正、BBB機能を追加する
* 561ab33 AAA機能を追加する
* ef0d189 (origin/master, origin/HEAD, master) 安定板1
* b4bf0eb 初期コミット

おわりに

以下のページが参考になりました。ありがとう存じます!

以上です。

コメントを残す