私の問題は ブランチを切り替えるときの致命的なGitエラー に関連しています。
コマンドでリモートブランチを取得しようとしています
git checkout -b local-name Origin/remote-name
しかし、私はこのエラーメッセージが出ます:
fatal:git checkout:パスの更新はブランチの切り替えと互換性がありません。
コミットとして解決できない 'Origin/remote-name'をチェックアウトしますか?
手動でブランチを作成してからリモートブランチを引っ張っても、新しいクローンを作成してブランチをチェックアウトするのと同じように動作します。
一緒に作業しているリポジトリで動作しないのはなぜですか?
あなたのローカルgitリポジトリがまだ認識していないリモートブランチをチェックアウトしようとしている時にこれが起こると私は信じています。試してください:
git remote show Origin
チェックアウトしたいリモートブランチが "Tracked remote branches"ではなく "New remote branches"の下にある場合は、まずそれらを取得する必要があります。
git remote update
git fetch
これでうまくいくはずです。
git checkout -b local-name Origin/remote-name
代替構文
git fetch Origin remote_branch_name:local_branch_name
このスレッドでうまく読めなかったことのほとんどを試した後、私はこれに出会いました: "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/*
トリックをしました
これが役に立つのか、それともあなたの質問に正確に関連するのかはわかりませんが、リモートリポジトリから単一のブランチだけを取り出してチェックアウトしようとしているなら、次の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>
そしてそれは完璧に働いた。トップ投票の回答と似ていますが、もう少し簡単です。
Remote-nameという名前のリモートブランチはありませんが、誤ってOrigin/remote-nameという名前のローカルブランチを作成したのでしょう。
ある時点で次のように入力することは可能ですか?
git branchオリジン/リモートネーム
したがって、Origin/remote-nameという名前のローカルブランチを作成します。次のコマンドを入力してください。
git checkout発行元/リモート名
あなたはどちらを見るでしょう:
ブランチ "Origin/remote-name"に切り替えました
これは本当に間違った名前のローカルブランチであることを意味します。
注:ローカルのブランチではない "Origin/rework-isscoring"への移動 このチェックアウトから新しいブランチを作りたい場合は、 (今すぐ、または後で)-bをcheckoutコマンドと一緒に使用します。例: git checkout -b
つまり、それは本当にリモートブランチです。
あまり直感的ではありませんが、これは私にとってはうまくいきます...
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
私にはタイプミスがあり、私のリモートブランチは存在しませんでした
リモートブランチを一覧表示するにはgit branch -a
を使用してください
ブロブがプール内にあったとしても、何十万回もフェッチした後でも、まだ追加されたリモートは表示されませんでした。何らかの理由で - tagsオプションをgit remote add
に指定してはいけません。 git fetchにrefを作成させるために、手動で.git/configからそれを削除することができます。
問題は、この他のSO質問にリンクできますか "checkout problem" ?
すなわち:関連する問題:
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]がブランチの名前を変更し、新しいブランチの新しい開始点をリセットし、互換性がないと見なされるようです。