web-dev-qa-db-ja.com

Gitで他のブランチに切り替えるにはどうすればいいですか?

これらの行のどれが正しいですか?

git checkout 'another_branch'

または

git checkout Origin 'another_branch'

または

git checkout Origin/'another_branch'

そして、これらの行の違いは何ですか?


92
Benyamin Jafari

another_branchが既にローカルに存在し、あなたがこのブランチにいない場合、git checkout another_branchはブランチに切り替えます。

another_branchが存在しないがOrigin/another_branchが存在する場合、git checkout another_branchgit checkout -b another_branch Origin/another_branch; git branch -u Origin/another_branchと同等です。これは、another_branchからOrigin/another_branchを作成し、Origin/another_branchanother_branchの上流に設定することです。

どちらも存在しない場合、git checkout another_branchはエラーを返します。

ほとんどの場合、git checkout Origin another_branchはエラーを返します。 Originがリビジョンでanother_branchがファイルの場合、そのリビジョンのファイルをチェックアウトしますが、おそらくそれはあなたが期待しているものではありません。 Originは、git fetchgit pullおよびgit Pushでリモートとして使用されています。これは、リモートリポジトリへのURLのエイリアスです。

git checkout Origin/another_branchが存在する場合、Origin/another_branchは成功します。どのブランチでもなく、HEAD状態になります。新しいコミットを行った場合、新しいコミットは既存のブランチから到達できず、ブランチは更新されません。

89
ElpieKay

Gitで他のブランチに切り替えます。簡単な答え、

git-checkout - ブランチの切り替えや作業ツリーファイルの復元

git fetch Origin         <----this will fetch the branch
git checkout branch_name <--- Switching the branch

ブランチを切り替える前に、変更されたファイルがないことを確認してください。その場合は、変更をコミットすることも、隠すこともできます。

32
danglingpointer

[git checkout "branch_name"]

別の言い方です。

[git checkout -b branch_name Origin/branch_name]

"branch_name"が存在する場合 only remote。

[git checkout -b branch_name Origin/branch_name]は、リモートが複数ある場合に便利です。

[git checkout Origin 'another_branch']についてこれが可能かどうかはわかりませんが、 "fetch"コマンドを使用してこれを実行できます - [git fetch Origin 'another_branch']

7
Mehdi

チェック:git branch -a

分岐が1つだけの場合その後、以下の手順を実行してください。

  • ステップ1:git config --list
  • ステップ2:git config --unset remote.Origin.fetch
  • ステップ3:git config --add remote.Origin.fetch +refs/heads/*:refs/remotes/Origin/*
2
pavan

Git 2.2 以降では、git switch <branch name>を使用してブランチを切り替えることができます。

1
gkw

ブランチにリモートブランチを追跡させたい場合、ブランチへの変更をコミットしたり変更を引っ張ったりするのであれば非常に重要です。実際のチェックアウトにadd -tを使用する必要があります。例:git checkout -t branchname

1
Matthew Joughin