Git checkout あれこれ
やりたいこと
- ローカルにリモートブランチから新しいブランチを作る
- 作ったブランチへ移動する
checkoutの前に
checkout
する前にリモートリポジトリの状態を確認して、ローカルに最新の状態を反映しておきます。
# リモートブランチの一覧を確認する
git branch -r
-r
か--remotes
をつけることで、リモートブランチの一覧を確認することができます。
# リモートブランチから最新の状態を取得する
git fetch --prune
--prune
をつけることで、リモートで削除された情報も取得できます。
(オプションなしのfetach
だと削除された情報は更新されない)
方法1
checkout -b
を使います。
git checkout -b local_branch origin/remote_branch
方法2
checkout -t
を使います。
-t
のところは--track
にしても同じです。
git checkout -t origin/remote_branch
checkout -b
の場合、ローカルのブランチ名を指定する必要がありますが、リモートと同じ名前にすることが多いので普段は-t
オプションを使ってます。
上記のコマンドを実行すると、ローカルリポジトリにremote_branch
という名前のブランチが自動で作成されます。
3. 方法3
Qiitaの記事に方法1,2より簡単な方法が紹介されていました。
試してみたら-b
も-t
の指定なしで出来ました。
git checkout origin/remote_branch
一定の条件が満たされてる場合、ローカルリポジトリに指定のブランチ<branch>がなくても上記のコマンドで方法1,2と同じ結果が得られるようです。
公式ドキュメントには下記のように書かれています。
git checkout [<branch>]
(省略)
If <branch> is not found but there does exist a tracking branch in exactly one remote (call it <remote>) with a matching name and --no-guess is not specified, treat as equivalent to $ git checkout -b <branch> --track <remote>/<branch>
Discussion