Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何最小化git合并冲突?_Git_Shell_Version Control - Fatal编程技术网

如何最小化git合并冲突?

如何最小化git合并冲突?,git,shell,version-control,Git,Shell,Version Control,我们公司使用git来跟踪文档/代码的更改,有几个人进行更改并推动中央回购。一般来说,他们中的大多数都是git或命令行工具的新手。对于他们,我们有脚本在进行更改后更新或发布他们的本地回购协议 是否有任何工作流能够更好地处理此类情况,以最大限度地减少发生的合并冲突,而这些冲突必须由更具git经验的人来解决?git并不能替代适当的开发实践。它不会为您编写更好的代码 如果两个开发人员使用完全相同的代码,git无法使他们的工作更轻松,如果是合并冲突,那么无论您是否在分支上,都将是合并冲突 短期解决方案:使

我们公司使用git来跟踪文档/代码的更改,有几个人进行更改并推动中央回购。一般来说,他们中的大多数都是git或命令行工具的新手。对于他们,我们有脚本在进行更改后更新或发布他们的本地回购协议


是否有任何工作流能够更好地处理此类情况,以最大限度地减少发生的合并冲突,而这些冲突必须由更具git经验的人来解决?

git并不能替代适当的开发实践。它不会为您编写更好的代码

如果两个开发人员使用完全相同的代码,git无法使他们的工作更轻松,如果是合并冲突,那么无论您是否在分支上,都将是合并冲突

短期解决方案:使用适当的本地和远程分支来封装不同功能上的工作。使用分支差异(或github拉请求)查看功能集并帮助解决差异和冲突


长期:修复您的代码,使其适应您的团队,反之亦然,并使用适当的开发实践。

没有什么神奇之处。主要是纪律

如果人们在与某个“主要”回购协议或分支机构合并之前,必须执行拉式请求之类的操作,或者等待提交被审查,那么一定要尽量缩短审查时间

您可能应该尽量缩短分支生命周期,但这实际上取决于您所从事的项目类型

使所有提交都尽可能小成为一条规则。让它成为一个规则,提交必须只改变一件事。制定一条规则,不要将表面上的更改(如空白)与功能更改和重大重构混为一谈。(不要完全禁止空白更改,只需将其与其他更改分开即可。)


除了版本控制本身,尝试以一种减少程序员在同一周左右更改相同代码的可能性的方式将任务分配给程序员。

这里有一篇文章可以帮助您更好地理解,“。它规定您应该分离不同类型的分支,包括:

  • 主人
  • 修补程序
  • 释放分支
  • 发展
  • 特征分支

合并冲突的首要原因是每次合并之间的时间
每次合并之间等待的时间越长,就越有可能看到合并冲突

您可以通过选择一个(例如)支持每个功能的分支,并促进任务的隔离来最小化这一点。
但是,只要涉及到一组公共文件(在两个不同的开发中),就会出现合并冲突,特别是如果等待时间过长

因此,对于分布式VCS,学习定期发布(推/拉),并学习

这不仅会减少冲突的数量,还会减少语义冲突的数量:这些合并看起来是自动的(没有冲突),但会产生错误的代码。

除了教你的同事如何使用工具外,还要看“

?这确实是唯一的出路。没有脚本和糖可以代替真正了解发生了什么。pmr是正确的:如果你让他们不学习他们的工具,你就不会帮助任何人。除此之外,大多数IDE都很好地集成了git,因此很容易进行分支和合并。我的目标不是消除合并冲突,我知道这是不可避免的。但是我相信一些工作流在防止合并冲突方面会更好,所以问题就来了。哦,而且:(1)在大多数情况下,开发人员无论如何都在处理不同的文件,(2)git在合并更改方面非常好,即使是在单个文件中(只要不在同一块中),3)可以先教你的员工使用分支/合并/远程命令,然后再教其他180个命令(;)和(4)你的同事可以/应该在问题上互相帮助(不仅仅是使用git)。最后并不难。功能分支+1。我们过去有长期运行的分支机构(公司中每个团队一个分支机构),有很多代码被提交给它们。然后一些可怜的草皮不得不把那根树枝合并成主人。现在,我们的团队使用小型的短期功能分支,主要负责该功能的人员在该功能准备就绪时将代码合并到主代码中。更快地掌握代码可以减少冲突,当您确实遇到冲突时,现在更经常的情况是,实际更改冲突代码的人正在解决冲突。这里的观点相同: