2013-06-28 68 views
10

我是git的新手,我使用Visual Studio的git扩展。当我尝试同步项目时,其他团队成员有时会提交更改,我可以看到传入的提交,但项目未同步,并且引发下面的错误。Visual Studio的Git扩展

libgit2引发了一个错误。类别= 21(MergeConflict)。 2 未提交的更改将被合并覆盖

问题是我该如何合并冲突?在发生此错误后,没有合并冲突的窗口,并且我还承诺完成所有更改。

回答

6

该消息是关于未提交的更改,而不是真正的合并冲突。学会不合并或做任何奇怪的git东西与未落实的变化。在操作之前提交您的更改或存储它们。即使这样的冲突没有被标记,它可能不是你真正想做的事情。

在GE有一个选项可以显示工作树的变化(除非你在一个巨大的回购工作,并定期有数百个变化的文件),并习惯在浏览中查看工作树。此外,“提交”按钮显示一个计数,当您煽动合并时,该计数应为0。

如果你的工作中间想要同步(并且再次思考,并且有一个很好的理由,诚实的话),使用stash,然后拉(或重新绑定),之后完成,取消你的工作。

真正的合并冲突最好使用可视化合并工具处理,您可以尝试使用tortoisemerge或我最喜欢的sourcegear的diffmerge。与GE一起发货的Kdiff3很适合环顾四周,但不擅长解决问题,除非您所需要的只是从字面上挑选候选人。 GE会让你自动解决冲突。

+1

中完成其余的操作(合并冲突等)。选择一个良好的工作流程练习以避免此问题。始终在功能分支上完成您的工作。然后swi当您准备合并时,主控分支会同步,然后一旦主控是最新的,合并您的功能分支。或者,如果您喜欢快进式风格的工作流程,则可以将您的功能分支与主设备重新绑定,然后进行合并。但基本上 - 正如在这个答案中所述。 – patthoyts

3

较早的答案并非总是如此。即使您没有任何未提交的更改,您也可以收到此消息。我的同事&我同时修复了一个错误,并致力于我们的本地回购,并且我更喜欢他。我从来没有检查过我的变化,但解开它&拉他的变化。同时,他“改变了”他的改变(没有和我说话),然后让我推动我的改变。我告诉他我已经抛弃了我的改变,所以他恢复了他的回复(结束了两次提交)。

当我去推动另一个改变(致力于我的本地回购,没有未提交的改变)时,他推动了他的改变和重新回归,并且我得到了上面的信息。

解决方案非常简单,我使用操作菜单打开命令提示符并在那里发出git pull。这工作正常,并创建了一个合并提交对我来说,他的逆转和重新回归。

是的,他可以有(insert incomprehensible git-gibberish here),但他没有,所以吸它书呆子。它的工作原理,我们正在继续。

下面是关于此问题的VS反馈项目:http://connect.microsoft.com/VisualStudio/feedbackdetail/view/955248/git-merge-fails-claiming-uncommited-change-would-be-overwritten-by-merge-ssh-mergeconflict

+0

git reset --hard,为我工作(我遇到的问题可能是由于我在另一台机器,VM上对同一分支的未提交更改造成的)。 – learnerplates

1

有时候,git pull是不够的......(如果你“已经是最新的。“)

可能需要在命令行完成合并:

Visual Studio(2015年,更新3对我来说)在Team ExplorerBranchesActionsOpen In Command Prompt,则:

git merge NameOfBranchBeingMergedFrom 

然后关闭该窗口并从VS