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


回答:


225

場合はanother_branch、すでにローカルに存在し、このブランチにない、そしてgit checkout another_branchブランチに切り替わります。

another_branch存在しないが存在する場合origin/another_branchgit checkout another_branchと同等git checkout -b another_branch origin/another_branch; git branch -u origin/another_branchです。それはの上流に作成another_branchorigin/another_branchて設定origin/another_branchすることですanother_branch

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

git checkout origin another_branchほとんどの場合、エラーを返します。もしorigin改正され、another_branchファイルで、そのリビジョンのファイル出て、それをチェックしますが、おそらくあなたが期待するものではないということ。origin大部分で使用されgit fetchgit pullそしてgit pushリモート、リモートリポジトリのURLのエイリアスとして。

git checkout origin/another_branchorigin/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で同時に維持している場合、ローカルリポジトリには、GitlabとGithubなどの2つのoriginリモートがある場合がありますgithub。この場合、リポジトリにはorigin/fooおよびがありgithub/fooます。作成する参照またはがわからないため、git switch foo文句を言うでしょう。必要に応じて、または必要に応じて指定する必要があります。両方のリモートブランチからブランチを作成する場合は、新しいブランチに識別名を使用することをお勧めします。fatal: invalid reference: fooorigin/foogithub/foofoogit switch -c foo origin/foogit 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>

24
この回答は正解です(いつものように、賛成です)が、役立つかもしれないコメントを追加しますgit checkout。私の意見では、このコマンドは多くのことを実行します。そのため、ここには非常に多くの操作モードがあります。ブランチgit checkout切り替えるだけだった場合、答えは簡単ですが、ブランチを作成し、ブランチ切り替えずに特定のコミットからファイルを抽出することもできます
torek 2017

11
これは正しい答えですが、コマンドラインでgitが多少台無しになっていることを示しています。ブランチを切り替えるgitチェックアウト?
2018

3
@thangまあ、リリース2.23.0では、これは修正されていますgit switch。ブランチに切り替えるために使用できるようになりました。
legends2k

このバージョンのgitではスイッチが機能しないようです。このバージョンのgitで別のブランチに切り替えるには何を使用しますか?C:\ widget> git --version git version 2.11.0.windows.3 C:\ widget> git switch master git: 'switch' is not a git command。「git --help」を参照してください。C:\ widget>
John

1
@Johnはgit checkout、最新バージョンでも機能する古いバージョンの代わりに使用します。
ElpieKay

66

gitの別のブランチに切り替える。簡単な答え、

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

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

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


最後のコマンドは、私を切り離されたHEAD状態にします。ブランチを編集できないことを意味します。

2
チェックアウトしようとしているブランチはフェッチされないため、チェックアウト前にフェッチする必要があります。ブランチが最新の場合は、フェッチをスキップして、git checkout branchnameを使用できます。
ダングリング

ブランチに切り替えた後に「git pull」を実行するだけで十分ではないでしょうか?

プルもOK、プルはフェッチを行い、バックグラウンドでマージします。差分がありません。
danglingpointer

17

[ git checkout "branch_name"]

別の言い方です:

[ git checkout -b branch_name origin/branch_name]

「branch_name」がリモートにのみ存在する場合。

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

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


別のブランチを作成するためのコマンド「git checkout -b branchName」を知っています。これは問題ではありませんでした!

10

Gitの2.23以降、1は使用することができますgit switch <branch name>枝を切り替えます。


6

私のために働いたのは次のとおりです:

必要なブランチに切り替えます。

git checkout -b BranchName

そして、私は次のようにして「マスター」を引き出しました。

git pull origin master

6

日常生活で役立つ便利なコマンド:

git checkout -b "branchname" ->  creates new branch
git branch                   ->  lists all branches
git checkout "branchname"    ->  switches to your branch
git push origin "branchname" ->  Pushes to your branch
git add */filename           -> Stages *(All files) or by given file name
git commit -m "commit message" -> Commits staged files
git push                     -> Pushes to your current branch

5

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


4

小切手 : 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
この一連のコマンドが別のブランチにどのように切り替わるのでしょうか。

これは、以前に(param を使用して)浅いクローンを作成し、上記のコマンドを使用してdepth別のリモートブランチを取得できない理由を知りたい場合に役立ちerror: pathspec 'another_branch' did not match any file(s) known to gitます。それは確かに元の質問が何であったかではありませんが、他の人がここで頭を悩ますのを助けることができます。
luciash d 'は

0

私はこれを使用して、あるブランチを別のブランチに切り替えることができます。それを使用できる人は、魅力のように私のために機能します。

gitスイッチ[branchName]またはgitチェックアウト[branchName]

例:gitスイッチの開発または
gitチェックアウトの開発

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.