git - 如何处理冲突

git - how to handle confilicts

场景如下:

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

用户B不拉动就开始改变。 (或者可能 用户 B 拉取存储库后应用了远程存储库的更改)然后他也想推送。就在这时,冲突发生了。我搜索了很多,但找不到任何解决方案,只能手动编辑冲突

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

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

尝试git mergetool,它将打开默认的合并工具,尽管您必须先安装合并工具。 有几个 mergetools 可以帮助您解决冲突,例如 meldopendiffkdiff3tkdiffxxdifftortoisemergegvimdiff, diffuse, ecmerge, p4merge, araxis, vimdiff, emerge.

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

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

手动解决冲突是可行的方法。冲突意味着开发人员 B 依赖于某些已更改的代码。这意味着他必须调整他的代码以适应开发人员 A 所做的更改。即 - 解决此冲突。

有时可以自动解决冲突。有时可以通过简单地选择 "ours after theirs" 等选项来解决。然而,即使git意义上没有冲突,代码仍然可能需要更正。

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

实际上有冲突可能比没有冲突要好 - 您会提前收到警告,告知您编写的代码必须更改。