2017-03-04 22 views
1

这里是场景:git - 如何处理confilicts

用户A和B具有相同的源代码。用户A进行更改=>添加=>提交=>推送。远程存储库中的源代码已更改。

用户B无需拉动即可开始更换。 (或者在用户B拉动存储库之后应用了远程存储库中的更改)然后他也想推送。此时发生冲突。我搜索了很多,并找不到任何解决方案,但手动编辑冲突

问题:手动编辑冲突是一种有效的方法吗?特别是在一个大项目中?什么是方法?

+0

可能重复[如何解决Git中的合并冲突?](http://stackoverflow.com/questions/161813/how-to-resolve-merge-conflicts-in-git) – 1615903

回答

1

手动管理合并冲突可能是一项繁琐的任务。

尝试git mergetool它将打开默认mergetool尽管您必须首先安装mergetool。 有几个mergetools它可以帮助您解决冲突,如meldopendiffkdiff3tkdiffxxdifftortoisemergegvimdiffdiffuseecmergep4mergearaxisvimdiffemerge

安装后只需执行,它会打开安装的mergetool,它会为您提供一个gui,它将引导您完成每个冲突,并且您可以选择如何合并。

如果您使用像IntelliJ这样的IDE,它们提供了内置的工具来解决合并冲突。

+0

谢谢。此外,它似乎有一些崇高的编辑好。像'sublimerge' –

1

手动冲突解决方案是要走的路。冲突意味着开发人员B依赖于已更改的某些代码。这意味着他必须使其代码适应开发人员A所做的更改。即 - 解决此冲突。

有时可以自动解决冲突。有时可以通过简单地选择一个选项来解决,比如“我们在他们之后”。但即使git没有冲突,代码仍然有可能需要纠正。

例如:有一个函数some_func接受一些参数。开发人员A将其重命名为some_new_name,而开发人员B在一些完全独立的代码区域中将呼叫添加到some_func。合并发生时没有任何冲突,但代码无法正常工作。

实际上,发生冲突可能比没有发生冲突更好 - 您会收到您写入的代码必须更改的预警。