git - 如何处理冲突
git - how to handle confilicts
场景如下:
用户A和B拥有相同的源代码。用户 A 进行更改 => 添加 => 提交 => 推送。远程仓库中的源代码已更改。
用户B不拉动就开始改变。 (或者可能 在 用户 B 拉取存储库后应用了远程存储库的更改)然后他也想推送。就在这时,冲突发生了。我搜索了很多,但找不到任何解决方案,只能手动编辑冲突。
问题:手动编辑冲突是一种有效的方法吗?特别是在一个大项目中?方法是什么?
手动管理合并冲突可能是一项繁琐的任务。
尝试git mergetool
,它将打开默认的合并工具,尽管您必须先安装合并工具。
有几个 mergetools 可以帮助您解决冲突,例如 meld
、opendiff
、kdiff3
、tkdiff
、xxdiff
、tortoisemerge
、gvimdiff
, 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
的调用。合并将在没有任何冲突的情况下发生,但代码将无法正常工作。
实际上有冲突可能比没有冲突要好 - 您会提前收到警告,告知您编写的代码必须更改。
场景如下:
用户A和B拥有相同的源代码。用户 A 进行更改 => 添加 => 提交 => 推送。远程仓库中的源代码已更改。
用户B不拉动就开始改变。 (或者可能 在 用户 B 拉取存储库后应用了远程存储库的更改)然后他也想推送。就在这时,冲突发生了。我搜索了很多,但找不到任何解决方案,只能手动编辑冲突。
问题:手动编辑冲突是一种有效的方法吗?特别是在一个大项目中?方法是什么?
手动管理合并冲突可能是一项繁琐的任务。
尝试git mergetool
,它将打开默认的合并工具,尽管您必须先安装合并工具。
有几个 mergetools 可以帮助您解决冲突,例如 meld
、opendiff
、kdiff3
、tkdiff
、xxdiff
、tortoisemerge
、gvimdiff
, 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
的调用。合并将在没有任何冲突的情况下发生,但代码将无法正常工作。
实际上有冲突可能比没有冲突要好 - 您会提前收到警告,告知您编写的代码必须更改。