Gitでブランチをmasterにマージするときに問題が発生しました。最初に、私はgit ls-remote
を実行することによってブランチ名を得ました。その枝を "branch-name"と呼びましょう。私はそれからgit merge branch-name
コマンドを実行して、そして以下の結果を得ました:
fatal: branch-name - not something we can merge
このエラーを解決するにはどうすればよいですか。
「マージできないもの」はどのようにして発生しますか 。存在しないブランチ.
それが問題ではない場合(私の場合のように)、マージしたいブランチのローカルコピーがない可能性があります。 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 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
をやっているのを見つけるかもしれません。
私もこの問題を抱えていました。ブランチは 'username/master'のように見えましたが、これは私が定義したリモートアドレスのように見えたのでgitを混乱させるようでした。これを使っている私にとって
git merge Origin/username/master
完全にうまくいった。
以下の方法は毎回私のために働きます。
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
そのブランチがあなたのローカルにないために起こるかもしれません。使用をマージする前に
git fetch Origin
このエラーは、変更をマージしたい場所からのブランチ(つまり、あなたの場合はbranch-name)がローカルに存在しないことを示唆しているので、ブランチをチェックアウトしてローカルの変更を取得する必要があります。あなたのマスターブランチにチェックアウトして取得してから、以下のステップに従ってください。
git checkout branch-name
git pull
git checkout new-branch-name
git merge branch-name
マージしたいブランチがローカルリポジトリに存在しないため、このエラーが発生しています。
それで、最初に以下のコマンドでマスターブランチにマージしたいbrachをチェックアウトしてください。
git checkout branch_name_to_merge
その後、以下のコマンドでマスターブランチとマージしてみてください。
git merge branch_name_to_merge
この答えは上記の質問とは関係ありませんが、私は同様の問題に直面しました、そしておそらくこれは誰かに役立つでしょう。以下のように、機能ブランチをmasterにマージしました。
$ git merge fix-load
次のようなエラーメッセージが表示されました。
merge:fix-load - マージできるものではありません
私は何よりも解決策を調べましたが、どれもうまくいきませんでした。
問題は私のブランチ名のスペルミスであることがわかりました(実際には、マージブランチ名はfix-loads
です)。
git merge BRANCH_NAME "some commit message"
を実行したときにこのエラーが発生しました - コミットメッセージに-mフラグを追加するのを忘れていたので、ブランチ名にコメントが含まれていると考えました。
参照を含む文字列が別のGitコマンド(またはその他のシェルコマンド)によって生成されたものである場合は、最後にリターンキャリッジが含まれていないことを確認してください。文字列を "git merge"に渡す前にそれを削除する必要があります。
エラーメッセージが2行に表示されるため、これが発生したときはかなり明白です。
merge: 26d8e04b29925ea5b59cb50501ab5a14dd35f0f9
- not something we can merge
ブランチ名にコンマ(、)があるため、このエラーが発生しました。ローカルブランチを削除した後、コンマなしで新しい名前で再チェックしました。うまくマージできました。
後世のために:AxeEffectが言ったように...あなたがあなたのローカルブランチ名にカンマやアポストロフィのようなばかげた文字があるかどうか確かめるためにタイプミスがないならチェックしてください。まさにそれが今私に起こりました。
マージしようとしているブランチに切り替えることができるかどうかを確認することをお勧めします。
マージしたいブランチがローカルリポジトリにあり、スペルミスがなかったにもかかわらず、このエラーが発生しました。
私は自分のローカルな変更を無視してブランチに切り替えることができるようにしました(Stashまたはcommitも優先できます)。その後、私は最初のブランチに戻り、マージは成功しました。
私の意見では私は私の地元の支店をリモートレポでマッピングするのを見逃していました。私は下にした、それはうまくいきました。
git checkout master
git remote add Origin https://github.com/yourrepo/project.git
git Push -u Origin master
git pull
git merge myBranch1FromMain
私にとっては、問題はマージメッセージへの「二重引用符」でした。だから私が二重の印を取り除いたとき、すべては魔法のように働いた。私は誰かを助けたいと思っています。 (私の下手な英語ですみません)
これは奇妙に聞こえるかもしれませんが、あなたのgitメールアドレスと名前を設定することを忘れないでください:
git config --global user.email "[email protected]"
git config --global user.name "FIRST_NAME LAST_NAME"
私にとっては、これを試したときに問題が発生しました。
git merge -s ours --no-commit --allow-unrelated-histories <remote name>/develop
そのため、実際にはmaster
の代わりにdevelop
を書くべきです。なぜなら、masterは私の実際のブランチではなくSubtreeのブランチ名だからです。