次の行のうちどれが正しいでしょうか?
git checkout 'another_branch'
または
git checkout origin 'another_branch'
または
git checkout origin/'another_branch'
そして、それらの違いは何でしょうか?
ベストアンサー1
another_branch
すでにローカルに存在し、このブランチにいない場合は、git checkout another_branch
ブランチに切り替えます。
another_branch
は存在しないが、がorigin/another_branch
存在する場合、 はgit checkout another_branch
と同等ですgit checkout -b another_branch origin/another_branch; git branch -u origin/another_branch
。つまり、another_branch
から を作成しorigin/another_branch
、origin/another_branch
を の上流として設定しますanother_branch
。
どちらも存在しない場合はgit checkout another_branch
エラーを返します。
git checkout origin another_branch
ほとんどの場合、エラーが返されます。 がorigin
リビジョンで がanother_branch
ファイルの場合、そのリビジョンのファイルがチェックアウトされますが、おそらくこれは期待どおりではありません。 はorigin
主に で使用されgit fetch
、リモートとしてgit pull
はgit push
、リモート リポジトリへの URL のエイリアスとして使用されます。
git checkout origin/another_branch
存在する場合は成功しますorigin/another_branch
。これにより、どのブランチにも存在しない、分離された HEAD 状態になります。新しいコミットを作成すると、新しいコミットは既存のブランチからアクセスできなくなり、どのブランチも更新されません。
アップデート:
2.23.0 がリリースされたので、これを使用してgit switch
ブランチを作成および切り替えることもできます。
存在する場合はfoo
、次のものに切り替えてみてくださいfoo
:
git switch foo
foo
が存在せず、が存在する場合は、からorigin/foo
作成してに切り替えてみてください:foo
origin/foo
foo
git switch -c foo origin/foo
# or simply
git switch foo
より一般的には、foo
が存在しない場合は、foo
既知の参照またはコミットから作成を試み、次に に切り替えますfoo
。
git switch -c foo <ref>
git switch -c foo <commit>
Gitlab と Github で同時にリポジトリを管理する場合、ローカル リポジトリには、たとえばorigin
Gitlab 用とgithub
Github 用の 2 つのリモートが存在する可能性があります。この場合、リポジトリにはorigin/foo
と がありますgithub/foo
。は、どの refまたはからを作成すればよいかわからないため、 というgit switch foo
エラー メッセージが表示されます。必要に応じてまたは を使用して を指定する必要があります。両方のリモート ブランチからブランチを作成する場合は、新しいブランチに区別できる名前を使用することをお勧めします。fatal: invalid reference: foo
origin/foo
github/foo
foo
git switch -c foo origin/foo
git switch -c foo github/foo
git switch -c gitlab_foo origin/foo
git switch -c github_foo github/foo
存在する場合はfoo
、既知の参照またはコミットから再作成/強制作成foo
(またはリセットfoo
)を試行し、次に切り替えますfoo
。
git switch -C foo <ref>
git switch -C foo <commit>
これは以下と同等です:
git switch foo
git reset [<ref>|<commit>] --hard
既知の参照またはコミットの分離された HEAD に切り替えてみます。
git switch -d <ref>
git switch -d <commit>
ブランチを作成するだけで、そのブランチに切り替えたくない場合は、git branch
代わりに を使用します。既知の参照またはコミットからブランチを作成してみてください。
git branch foo <ref>
git branch foo <commit>