Git チェックアウト:パスの更新はブランチの切り替えと互換性がありません

StackOverflow https://stackoverflow.com/questions/945654

  •  09-09-2019
  •  | 
  •  

質問

私の問題は次のことに関連しています ブランチ切り替え時の致命的な Git エラー.

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

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

しかし、次のエラーメッセージが表示されます。

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

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

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

役に立ちましたか?

解決

私はあなたの地元のgitのレポがまだ認識していないリモートブランチをチェックアウトしようとしているとき、この問題が発生したと考えています。試してみてください。

git remote show origin
あなたがチェックアウトしたいリモートブランチは、

「新しいリモートブランチ」の下にあるとされていない場合、「追跡リモートブランチは、」あなたは最初にそれらを取得する必要があります:

git remote update
git fetch

今では動作するはずます:

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

他のヒント

代替構文、

git fetch origin remote_branch_name:local_branch_name

私は成功せず、このスレッドで読むことができるもののほとんどを試した後、私はこの1つに出くわし: リモートブランチは「gitのブランチに表示されません - 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/*

タグのトリックをしました
これは役に立つか、あなたの質問に正確に関連しているが、あなたは、リモートリポジトリからのみのシングルのブランチを取得し、チェックアウトしようとしている場合は、次の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

私のために働いた上記のどれも。私の状況は私のリモートブランチは、を起源のではなく、わずかに異なっています。しかし、異なるリポジトリにます。

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

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

1.7.5.4に取り組んで確認

私にとっては何であったか働います:

git fetch

リモート上のすべての支店のためにあなたのマシンに至るまで、すべての引用文献を引っ張ります。その後、私は何ができる

git checkout <branchname>

と、それは完全に働きました。トップと同様に、答えを投票し、もう少しシンプル。

私はそこに、リモート名という名前のリモートブランチはありませんが、あなたは不注意起源/リモート-nameという名前のローカルブランチを作成したことを疑うます。

が入力されたいくつかの点であなたのことが可能です。

git branch origin/remote-name

このように、原点/リモート-nameという名前のローカルブランチを作成しますか?このコマンドを入力します:

git checkout origin/remote-name

あなたはわかります次のいずれか

Switched to branch "origin/remote-name"

それは本当にミスという名前のローカルブランチだ、または意味

Note: moving to "origin/rework-isscoring" which isn't a local branch
If you want to create a new branch from this checkout, you may do so
(now or later) by using -b with the checkout command again. Example:
  git checkout -b 

それが本当にリモートブランチであることを意味します。

これは非常に直感的ではないのですが、これは私のためによく働く...

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

THENのgitブランチ--trackコマンドを実行します...

  git branch --track $BRANCH origin/$BRANCH

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

リモートブランチを一覧表示するgit branch -aを使用

あなたの問題はこの他のSOの質問にリンクされていますか? 「チェックアウトの問題」?

つまり:以下に関連する問題:

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

注記:何ですか 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] がブランチの名前を変更し、新しいブランチの新しい開始点をリセットしているようなもので、互換性がないと考えられます。

何億回もフェッチしても、BLOB はプール内にありましたが、追加されたリモートは表示されませんでした。結局のところ、 --タグ オプションは与えられるべきではない git remote add どんな理由であれ。.git/config から手動で削除して、git fetch に参照を作成させることができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top