回答:
「マージできるものではない」はどのように発生するのですか?、存在しないブランチをプルしようとしているため、このエラーはブランチ名のタイプミスから発生する可能性があります。
(私の場合のように)それが問題でない場合は、マージするブランチのローカルコピーがない可能性があります。Gitは、ブランチをマージするために、両方のブランチのローカルな知識を必要とします。これを解決するには、マージするブランチをチェックアウトしてから、マージするブランチに戻ります。
git checkout branch-name
git checkout master
git merge branch-name
これは動作するはずですが、次のエラーが表示された場合
error: pathspec 'remote-name/branch-name' did not match any file(s) known to git.
ブランチをチェックアウトする前に、リモート(おそらく「必ずしも」ではないが「origin」)をフェッチする必要があります。
git fetch remote-name
Git requires local knowledge of both branches in order to merge those branches
ばかげた提案ですが、ブランチ名にタイプミスがないことを確認してください!
リモートのアップストリームからプルするときgit fetch --all
、私のためにトリックをしました:
git remote add upstream [url to the original repo]
git checkout [branch to be updated]
git fetch --all
git merge upstream/[branch to be updated]
他の場合では、リモート(起点、上流)ブランチが存在しない場合にも「マージできないもの」というエラーが発生することもわかりました。これは当たり前のように思えるかもしれませんがgit merge origin/develop
、しかないリポジトリで自分がやっていることに気付くかもしれませんmaster
。
git remote add upstream
は私がそれを解決するために欠けていた重要なことでした。よくある間違いは、フォークがどこから分岐したかが自動的にわかるということです。
私にもこの問題がありました。ブランチは 'username / master'のように見えましたが、これは私が定義したリモートアドレスのようにgitを混乱させるようでした。これを使って
git merge origin/username/master
完全にうまくいきました。
origin/
もリモートブランチの名前の前に置かなければなりませんでした。
/
。
マージするブランチがローカルリポジトリに存在しないため、このエラーが発生します。
したがって、最初に次のコマンドでマスターブランチにマージするブランチをチェックアウトします。
git checkout branch_name_to_merge
この後、次のコマンドでマスターブランチとマージしてみてください。
git merge branch_name_to_merge
checkout
ブランチに移動する必要がある場合があります
このエラーは、変更をマージする場所からのブランチ(つまり、ブランチ名)がローカルに存在しないことを示しているため、ブランチをチェックアウトしてローカルの変更をフェッチする必要があります。マスターブランチにチェックアウトしてフェッチし、以下の手順に従います。
git checkout branch-name
git pull
git checkout new-branch-name
git merge branch-name
この回答は上記の質問とは関係ありませんが、私は同様の問題に直面しました。おそらくこれは誰かに役立つでしょう。以下のように、機能ブランチをマスターにマージしました:
$ git merge fix-load
次のエラーメッセージが表示されました。
merge:fix-load-マージできるものではありません
上記のすべての解決策を調べましたが、どれもうまくいきませんでした。
問題は自分のブランチ名のスペルミスであることがわかりました(実際には、マージブランチ名はですfix-loads
)。
git merge origin/fix-loads
働いた。
参照を含む文字列が別のGitコマンド(またはさらに言えば他のシェルコマンド)によって作成された場合は、最後に改行が含まれていないことを確認してください。文字列を「git merge」に渡す前に、それを取り除く必要があります。
エラーメッセージが2行で表示されるため、これがいつ発生するかは非常に明白です。
merge: 26d8e04b29925ea5b59cb50501ab5a14dd35f0f9
- not something we can merge
ブランチ名にコンマ(、)が含まれていたため、このエラーが発生しました。ローカルブランチを削除してから、カンマなしで新しい名前で再確認しました。うまく結合できました。
後世のために:AxeEffectが言ったように...タイプミスがない場合は、ローカルのブランチ名にカンマやアポストロフィなどのとんでもない文字があるかどうかを確認してください。まさに今まさにそれが起こった。
私にとってこれを試したときに問題が発生しました:
git merge -s ours --no-commit --allow-unrelated-histories <remote name>/develop
したがって、masterは実際のブランチではなく、Subtreeのブランチ名だったので、実際にはのmaster
代わりに記述すべきdevelop
でした。
これは奇妙に聞こえるかもしれませんが、gitメールと名前を設定することを忘れないでください:
git config --global user.email "MY@EMAIL.COM"
git config --global user.name "FIRST_NAME LAST_NAME"
私にとっての問題は、マージメッセージへの「二重引用符」でした。したがって、二重マークを削除すると、すべて魔法のように機能しました。私は誰かを助けたいと思います。(英語が下手でごめんなさい)
私はマスターと別のブランチが2つの異なる作業フォルダーにチェックアウトされた作業ツリーを持っていました。
PS C:\rhipheusADO\Build> git worktree list
C:/rhipheusADO/Build 7d32e6e [vyas-cr-core]
C:/rhipheusADO/Build-master 91d418c [master]
PS C:\rhipheusADO\Build> cd ..\Build-master\
PS C:\rhipheusADO\Build-master> git merge 7d32e6e #Or any other intermediary commits
Updating 91d418c..7d32e6e
Fast-forward
Pipeline/CR-MultiPool/azure-pipelines-auc.yml | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
PS C:\rhipheusADO\Build-master> git ls-remote
From https://myorg.visualstudio.com/HelloWorldApp/_git/Build
53060bac18f9d4e7c619e5170c436e6049b63f25 HEAD
7d32e6ec76d5a5271caebc2555d5a3a84b703954 refs/heads/vyas-cr-core
PS C:\rhipheusADO\Build-master> git merge 7d32e6ec76d5a5271caebc2555d5a3a84b703954
Already up-to-date
PS C:\rhipheusADO\Build> git push
Total 0 (delta 0), reused 0 (delta 0)
To https://myorg.visualstudio.com/HelloWorldApp/_git/Build
91d418c..7d32e6e master -> master
最新のコミットをマージする必要がある場合:
git merge origin/vyas-cr-core
git push
そして私がいつもやっていたことと同じです:
git checkout master # This is needed if you're not using worktrees
git pull origin vyas-cr-core
git push
git fetch
でリモートブランチをマージする前に最初に。