使用eclipse egit插件我遇到了“多个合并基础”异常。 在我成功解决问题之前,这次没有任何帮助。 即使在创建了额外的提交和分支之后,樱桃挑选。存储库分支似乎被阻止合并。
这是一个例外:
An internal error occurred during: "Merging with refs/remotes/origin/master".
Exception caught during execution of merge command. java.io.IOException: Multiple merge bases for:
082a3a9846147a0e6df72d6cffa6d6e517275b7b
4d6c573c52ebb0de091bd91dbcefcbcbd44e7534 found:
c480f2b3683a5d0c5607984ea6393d61dfa9fba4
9da20a3c6304059ed92296ef2decb6f04e7112df
答案 0 :(得分:13)
这需要的递归合并策略是自EGit 3.0以来的默认值(见bug 380314)。
如果您使用的是旧版本,请参阅download page进行升级。
或者,尝试在上次合并之前重置为上次本地提交,然后与origin/master
合并。然后,如果你在原始合并之上做了更多更改,那就选择这些。
另一种可能性是使用C git(在控制台上)进行合并,它可以处理这种情况。
答案 1 :(得分:5)
如果您不能或不想更新到最新的EGit,那么最可靠的解决方法是(如robinst suggests)从此状态恢复,然后在命令行上合并。
Multiple merge bases
问题会使您的存储库处于合并状态中。git merge -s ours
一样。您可以通过查找MERGE_HEAD
文件夹中的MERGE_MSG
和.git
文件来查看您是否处于合并状态。只需执行git status
即可告诉您nothing to commit
:
$ git status
# On branch master
# Your branch and 'origin/master' have diverged,
# and have 4 and 25 different commit(s) each, respectively.
#
nothing to commit (working directory clean)
$ cat .git/MERGE_HEAD
1234567890abcdef1234567890abcdef12345678
$ cat .git/MERGE_MSG
Merge remote branch 'origin/master'
然后,您可以在尝试从EGit进行合并之前返回到您所处的状态。
$ git reset --hard
HEAD is now at 0123456 Blah blah blah
$ cat .git/MERGE_HEAD .git/MERGE_MSG
cat: .git/MERGE_HEAD: No such file or directory
cat: .git/MERGE_MSG: No such file or directory
与往常一样,这将丢失自上次提交以来所做的所有更改。
请注意,您也可以执行git merge --abort
,但在某些版本的git上,建议您提交更改,如果您希望避免远程更改被静默还原(不是绝对不想要。)
您现在可以使用git命令行重新运行您最初想要的合并,该命令行将使用递归解析策略,因此应该正常运行:
$ git merge origin/master
Auto-merging ...
...
Merge made by recursive.
...
$ git --no-pager log -1 --oneline
2345678 Merge remote branch 'origin/master'