475

私の問題は、ブランチを切り替えるときの Fatal Git エラーに関連しています。

コマンドでリモートブランチを取得しようとしています

git checkout -b local-name origin/remote-name

しかし、私はこのエラーメッセージを受け取ります:

致命的: git checkout: パスの更新は、ブランチの切り替えと互換性がありません。
コミットとして解決できない 'origin/remote-name' をチェックアウトするつもりでしたか?

手動でブランチを作成してからリモート ブランチをプルすると、新しいクローンを作成してブランチをチェックアウトするのと同じように機能します。

使用しているリポジトリで機能しないのはなぜですか?

4

11 に答える 11

745

これは、ローカルの git リポジトリがまだ認識していないリモート ブランチをチェックアウトしようとしているときに発生すると考えられます。試す:

git remote show origin

チェックアウトしたいリモートブランチが「追跡されたリモートブランチ」ではなく「新しいリモートブランチ」の下にある場合は、最初にそれらを取得する必要があります。

git remote update
git fetch

これで動作するはずです:

git checkout -b local-name origin/remote-name
于 2009-09-03T02:52:50.530 に答える
152

代替構文、

git fetch origin remote_branch_name:local_branch_name
于 2009-10-23T17:52:54.947 に答える
47

このスレッドで読むことができたもののほとんどを試した後、成功せずに、次のスレッドに出くわしました: リモートブランチが「git branch -r」に表示されない

私の .git/config ファイルが間違っていることが判明しました。簡単な修正を行った後、すべてのブランチが表示されました。

出発地

[remote "origin"]
    url = http://stash.server.com/scm/EX/project.git
    fetch = +refs/heads/master:refs/remotes/origin/master

[remote "origin"]
    url = http://stash.server.com/scm/EX/project.git
    fetch = +refs/heads/*:refs/remotes/origin/*

トリックをした

于 2013-07-05T09:33:55.167 に答える
12

これが役立つか、質問に正確に関連するかどうかはわかりませんが、リモートリポジトリから単一のブランチのみをフェッチしてチェックアウトしようとしている場合は、次の git コマンドでうまくいきます。

url= << URL TO REPOSITORY >>
branch= << BRANCH NAME >>

git init
git remote add origin $url
git fetch origin $branch:origin/$branch
git checkout -b $branch --track origin/$branch
于 2011-02-23T20:42:26.067 に答える
11

上記のどれも私にとってはうまくいきませんでした。私の状況は少し異なります。私のリモート ブランチはoriginではありません。ただし、別のリポジトリにあります。

git remote add remoterepo GIT_URL.git
git fetch remoterepo
git checkout -b branchname remoterepo/branchname

ヒント: 次の出力git branch -v -aにリモート ブランチが表示されない場合、それを確認する方法はありません。

1.7.5.4で動作確認済み

于 2011-07-11T20:33:32.230 に答える
8

私にとってうまくいったのは:

git fetch

これにより、リモートのすべてのブランチのすべての参照がマシンにプルダウンされます。その後、私はすることができます

git checkout <branchname>

そしてそれは完璧に機能しました。上位投票の回答に似ていますが、もう少し簡単です。

于 2012-04-26T20:38:28.230 に答える
4

remote-name という名前のリモート ブランチはないと思われますが、origin/remote-name という名前のローカル ブランチをうっかり作成してしまったのではないでしょうか。

ある時点で次のように入力することは可能ですか:

git ブランチの起点/リモート名

したがって、origin/remote-name という名前のローカル ブランチを作成しますか? 次のコマンドを入力します。

git チェックアウトの起点/リモート名

次のいずれかが表示されます。

ブランチ「origin/remote-name」に切り替えました

これは、実際にはローカル ブランチの名前が間違っていることを意味します。

注: ローカル ブランチではない「origin/rework-isscoring」に移動します
このチェックアウトから新しいブランチを作成したい場合は、そうすることができます
(現在または後で) checkout コマンドで -b を再度使用します。例:
  git チェックアウト -b

これは、実際にはリモート ブランチであることを意味します。

于 2009-10-23T18:22:43.593 に答える
3

あまり直感的ではありませんが、これは私にとってはうまくいきます...

  mkdir remote.git & cd remote.git & git init
  git remote add origin $REPO
  git fetch origin $BRANCH:refs/remotes/origin/$BRANCH        

次に、git branch --track コマンドを実行します ...

  git branch --track $BRANCH origin/$BRANCH
于 2011-09-19T00:34:59.387 に答える
3

私にとってはタイプミスがあり、リモートブランチが存在しませんでした

git branch -aリモート ブランチの一覧表示に使用

于 2017-12-08T15:53:03.547 に答える
1

あなたの問題は、この他のSOの質問「チェックアウトの問題」にリンクできますか?

すなわち: 以下に関連する問題:

  • 古いバージョンの Git
  • 新しいブランチを開始するコミットの名前を参照するgit checkout -b [<new_branch>] [<start_point>]、 奇妙なチェックアウト構文。それはそうではありません。 (一方、リモート ブランチの名前である start_point はサポートされています)[<start_point>]'origin/remote-name'
    git branch

注: checkout.sh スクリプトの内容は次のとおりです。

  if test '' != "$newbranch$force$merge"
  then
    die "git checkout: updating paths is incompatible with switching branches/forcing$hint"
  fi

これは、構文 git checkout -b [] [remote_branch_name] がブランチの名前を変更し、新しいブランチの新しい開始点をリセットすることと似ていますが、これは互換性がないと見なされます。

于 2009-06-03T19:31:42.583 に答える
1

何十億回もフェッチした後でも、追加されたリモートは表示されませんでしたが、ブロブはプールにありました。なんらかの理由で --tagsオプションを指定するべきではないことがわかりgit remote addました。.git/config から手動で削除して、git fetch に参照を作成させることができます。

于 2012-05-29T16:23:32.960 に答える