我是git的新手,我正在使用Visual Studio的git扩展。当其他团队成员有时在我尝试同步项目时提交更改时,我可以看到传入的提交,但项目未同步,并且引发了以下错误。
libgit2引发了一个错误。 Category = 21(MergeConflict)。 2 合并
将覆盖未提交的更改
问题是我如何合并冲突?
。在提出此错误后,没有合并冲突的窗口。我已经提交了所有更改。答案 0 :(得分:5)
消息是关于未提交的更改,而不是真正的合并冲突。学习不合并或做任何花哨的git与未提交的更改。在操作提交更改或存储它们之前。即使这样的冲突没有被标记,也可能不是你真正想做的事情。
在GE中,有一个显示工作树更改的选项(忽略“慢速”警告,除非您处理巨型仓库并且经常有数百个已更改的文件)并习惯在浏览中查看它。此外,“提交”按钮显示一个计数,当您煽动合并时,该计数应为0.
如果在你工作的中间你想要同步(并再次思考并且有一个非常好的理由,诚实),使用stash
,然后拉(或变基),在完成之后,取消暂停你的工作。
真正的合并冲突最好使用可视化合并工具来处理,你可以尝试tortoisemerge,或者我最喜欢的sourcegear的diffmerge。与GE一起发货的Kdiff3很好地环顾四周,但不太擅长解决问题,除非你需要的只是从字面上挑选候选人。 GE让您自动解决冲突。
答案 1 :(得分:3)
早期的答案并非总是如此。即使您没有任何未提交的更改,也可以收到此消息。我的同事&我都修了一个错误,并致力于我们当地的回购,我更喜欢他。我从来没有检查过我的变化,但解除了它的影响。拉了他的变化。
与此同时,他“恢复了”他的改变(没有跟我说话),然后让我推动改变。我告诉他我扔了我的改变,所以他恢复了他的恢复(最后有两次提交)。
当我去推动一个不同的变化(致力于我的本地仓库并没有任何未提交的变更)时,他推动了他的变化的回归和重新回复,我得到了上面的信息。
解决方案非常简单,我使用“操作”菜单打开命令提示符并在那里发出git pull
。这工作正常并为我创建了一个合并提交,用于他的回归和重新版本。
是的,他可以(insert incomprehensible git-gibberish here
)代替,但他没有,所以吮吸它的书呆子。它有效,我们正在继续。
答案 2 :(得分:1)
有时候,git pull
还不够......(如果你得到的话#34;已经是最新版了。")
可能需要从命令行进行合并:
在Visual Studio
,Team Explorer
,Branches
,Actions
的{{1}}(2015年,对我来说更新3),然后:
Open In Command Prompt
然后关闭该窗口并完成git merge NameOfBranchBeingMergedFrom