10

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

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

问题是如何合并冲突?引发此错误后,没有合并冲突的窗口,并且我还提交了所有更改。

4

3 回答 3

5

该消息是关于未提交的更改,而不是真正的合并冲突。学习不要合并或做任何花哨的 git 东西,而不是未提交的更改。在操作之前提交您的更改或存储它们。即使没有标记出这样的冲突,也可能不是您真正想要做的。

在 GE 中有一个显示工作树更改的选项(忽略“缓慢”警告,除非您处理大型 repo 并且经常有数百个更改的文件)并习惯于在浏览中查看它。“提交”按钮还显示一个计数,当您煽动合并时该计数应为 0。

如果在你的工作中你想同步(并且再次考虑并且有一个非常好的理由,诚实),使用stash,然后拉(或变基),然后完成之后,取消你的工作。

真正的合并冲突最好使用可视化合并工具来处理,您可以尝试 tortoisemerge,或者我最喜欢的 sourcegear 的 diffmerge。GE 附带的 Kdiff3 很适合环顾四周,但不擅长自行解决,除非您只需要从字面上挑选候选人。GE 让您自动解决冲突。

于 2013-06-28T11:08:22.943 回答
3

较早的答案并不总是正确的。即使您没有任何未提交的更改,您也可以收到此消息。我的同事和我都修复了一个错误,并致力于我们的本地回购,我更喜欢他。我从未检查过我的零钱,但解开了它并拉走了他的零钱。

同时,他已经“恢复”了他的更改(没有和我说话),然后要求我推动我的更改。我告诉他我已经放弃了我的更改,所以他恢复了他的回复(最终提交了两次)。

当我去推送一个不同的更改(提交到我的本地仓库,没有未提交的更改)时,他同时推送了他的更改的恢复和重新恢复,我收到了上面的消息。

解决方案非常简单,我使用 Actions 菜单打开命令提示符并在那里发出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 -合并冲突

于 2015-12-10T20:22:07.573 回答
1

有时,git pull这还不够......(如果你得到“已经是最新的。”)

可能需要从命令行进行合并:

Visual Studio(2015, Update 3 for me) 中Team Explorer, Branches, Actions, Open In Command Prompt, 然后:

git merge NameOfBranchBeingMergedFrom

然后关闭该窗口并从VS

于 2016-08-03T17:04:36.993 回答