9 git merge eclipse-plugin egit
使用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
Run Code Online (Sandbox Code Playgroud)
如果您不能或不想更新到最新的EGit,那么最可靠的解决方法是(如robinst建议的那样)从此状态恢复然后在命令行上合并.
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'
Run Code Online (Sandbox Code Playgroud)
然后,您可以在尝试从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
Run Code Online (Sandbox Code Playgroud)
与往常一样,这将丢失自上次提交以来所做的任何和所有更改.
请注意,您也可以执行此操作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'
Run Code Online (Sandbox Code Playgroud)