web-dev-qa-db-ja.com

gitの「マージできない」エラーを解決する方法

Gitでブランチをmasterにマージするときに問題が発生しました。最初に、私はgit ls-remoteを実行することによってブランチ名を得ました。その枝を "branch-name"と呼びましょう。私はそれからgit merge branch-nameコマンドを実行して、そして以下の結果を得ました:

fatal: branch-name - not something we can merge

このエラーを解決するにはどうすればよいですか。

221
Brian

「マージできないもの」はどのようにして発生しますか 。存在しないブランチ.

それが問題ではない場合(私の場合のように)、マージしたいブランチのローカルコピーがない可能性があります。 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
281
Brian

それはばかげた提案ですが、ブランチ名にタイプミスがないことを確認してください。

79
endless

リモートのアップストリームから引っ張るとき、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]

他のケースでは、リモート(Origin、アップストリーム)ブランチが存在しない場合にも "マージできません"というエラーが発生することがあります。これは明らかに思われるかもしれませんが、あなたは自分自身がmasterだけを持つレポジトリでgit merge Origin/developをやっているのを見つけるかもしれません。

59
Eneko Alonso

私もこの問題を抱えていました。ブランチは 'username/master'のように見えましたが、これは私が定義したリモートアドレスのように見えたのでgitを混乱させるようでした。これを使っている私にとって

git merge Origin/username/master

完全にうまくいった。

20
spekulatius

以下の方法は毎回私のために働きます。

git checkout master
git pull
git checkout branch-name-to-be-merged
git pull
git checkout branch-name
git pull
git merge branch-name-to-be-merged
14
R.N.V.

そのブランチがあなたのローカルにないために起こるかもしれません。使用をマージする前に

git fetch Origin
9
Alok Kamboj

このエラーは、変更をマージしたい場所からのブランチ(つまり、あなたの場合はbranch-name)がローカルに存在しないことを示唆しているので、ブランチをチェックアウトしてローカルの変更を取得する必要があります。あなたのマスターブランチにチェックアウトして取得してから、以下のステップに従ってください。

git checkout branch-name
git pull
git checkout new-branch-name
git merge branch-name
7
Amar Magar

マージしたいブランチがローカルリポジトリに存在しないため、このエラーが発生しています。

それで、最初に以下のコマンドでマスターブランチにマージしたいbrachをチェックアウトしてください。

git checkout branch_name_to_merge

その後、以下のコマンドでマスターブランチとマージしてみてください。

git merge branch_name_to_merge
6

この答えは上記の質問とは関係ありませんが、私は同様の問題に直面しました、そしておそらくこれは誰かに役立つでしょう。以下のように、機能ブランチをmasterにマージしました。

$ git merge fix-load

次のようなエラーメッセージが表示されました。

merge:fix-load - マージできるものではありません

私は何よりも解決策を調べましたが、どれもうまくいきませんでした。

問題は私のブランチ名のスペルミスであることがわかりました(実際には、マージブランチ名はfix-loadsです)。

4
yala ramesh

git merge BRANCH_NAME "some commit message"を実行したときにこのエラーが発生しました - コミットメッセージに-mフラグを追加するのを忘れていたので、ブランチ名にコメントが含まれていると考えました。

3
purelylogical

参照を含む文字列が別のGitコマンド(またはその他のシェルコマンド)によって生成されたものである場合は、最後にリターンキャリッジが含まれていないことを確認してください。文字列を "git merge"に渡す前にそれを削除する必要があります。

エラーメッセージが2行に表示されるため、これが発生したときはかなり明白です。

merge: 26d8e04b29925ea5b59cb50501ab5a14dd35f0f9
 - not something we can merge
2
ocroquette

ブランチ名にコンマ(、)があるため、このエラーが発生しました。ローカルブランチを削除した後、コンマなしで新しい名前で再チェックしました。うまくマージできました。

2
Doug

後世のために:AxeEffectが言ったように...あなたがあなたのローカルブランチ名にカンマやアポストロフィのようなばかげた文字があるかどうか確かめるためにタイプミスがないならチェックしてください。まさにそれが今私に起こりました。

1
Elder Smash

マージしようとしているブランチに切り替えることができるかどうかを確認することをお勧めします。

マージしたいブランチがローカルリポジトリにあり、スペルミスがなかったにもかかわらず、このエラーが発生しました。

私は自分のローカルな変更を無視してブランチに切り替えることができるようにしました(Stashまたはcommitも優先できます)。その後、私は最初のブランチに戻り、マージは成功しました。

1
eaykin

私の意見では私は私の地元の支店をリモートレポでマッピングするのを見逃していました。私は下にした、それはうまくいきました。

git checkout master
git remote add Origin https://github.com/yourrepo/project.git
git Push -u Origin master
git pull
git merge myBranch1FromMain
0
Vinay Sharma

私にとっては、問題はマージメッセージへの「二重引用符」でした。だから私が二重の印を取り除いたとき、すべては魔法のように働いた。私は誰かを助けたいと思っています。 (私の下手な英語ですみません)

0
Aryelson Santos

これは奇妙に聞こえるかもしれませんが、あなたのgitメールアドレスと名前を設定することを忘れないでください:

git config --global user.email "[email protected]"
git config --global user.name "FIRST_NAME LAST_NAME"
0
superarts.org

私にとっては、これを試したときに問題が発生しました。

git merge -s ours --no-commit --allow-unrelated-histories <remote name>/develop

そのため、実際にはmasterの代わりにdevelopを書くべきです。なぜなら、masterは私の実際のブランチではなくSubtreeのブランチ名だからです。

0
Levon Petrosyan