Version control 如何编写不容易合并冲突的更改?

Version control 如何编写不容易合并冲突的更改?,version-control,merge,conflict,Version Control,Merge,Conflict,自动合并并不完美。不存在行编辑冲突并不意味着不存在语法冲突,也不意味着不存在语义冲突 是否有人制定了创作低冲突变更的策略?这是否属于TDD或其他方法(当然TDD有助于捕获它们,但它实际上阻止了它们)?首先,您的代码库应该是模块化的。其次,你需要的是与团队其他成员的沟通。每个人都应该知道谁在做什么。如果内部API有变化,则应向整个团队说明 此外,在提交之前,请始终获取最后一个版本,如果需要复杂的合并,请在本地执行 这确实是人类的问题,而不是技术问题。源代码管理不会取代正确的通信通道。你的项目经理应

自动合并并不完美。不存在行编辑冲突并不意味着不存在语法冲突,也不意味着不存在语义冲突


是否有人制定了创作低冲突变更的策略?这是否属于TDD或其他方法(当然TDD有助于捕获它们,但它实际上阻止了它们)?

首先,您的代码库应该是模块化的。其次,你需要的是与团队其他成员的沟通。每个人都应该知道谁在做什么。如果内部API有变化,则应向整个团队说明

此外,在提交之前,请始终获取最后一个版本,如果需要复杂的合并,请在本地执行

这确实是人类的问题,而不是技术问题。源代码管理不会取代正确的通信通道。你的项目经理应该掌握每一个变化,他应该意识到什么时候一个变化会跨越几个人

此外,还需要常识。:)


单元测试当然有助于捕获合并时可能出现的最难以捉摸的错误。

与您的开发伙伴交谈,尽可能避免同步编辑同一代码块。拥有一个良好的模块化体系结构(小类、解耦的功能)几乎可以一直做到这一点


如果确实发生冲突,我们通常会通过其中一人切换到为未经测试的代码编写单元测试几分钟来解决冲突。

我总是发现,我的提交越小,它们发生合并冲突的可能性就越小。那些有大问题的人似乎总是忙上好几天,然后试图一次把他们全部合并起来

现在我在一个2人团队中工作,我们一直在同一个代码库中。我们每个人都在一个个人分支中工作,然后在有工作的时候集成到一个共享分支中。通常一天几次。我们几乎从来没有合并冲突,当我们这样做的时候,它们是非常琐碎的

所以。。。经常从存储库获取最新代码。在您自己的分支中工作,这样您就可以提交您的更改并合并其他人的工作,而不会影响团队的其他成员。然后尽可能频繁地将您自己的代码推送到共享分支上,这样更改将尽可能小


另外,和你的团队谈谈。如果您知道其他人正在某个特定文件中工作,您可能希望等到他们完成工作后再开始。有时你会情不自禁,但沟通至少可以让你计划一个复杂的合并,而不是感到惊讶。

违反的类最难合并。找到一个难以合并的类可能是它需要重构的标志,可能是朝着更多部分的方向

很难一直保持这种平衡,尤其是当功能在逻辑上耦合时。我认为这是一个相当实用的建议。不要为“可人化”而设计,你可能不需要它。但如果合并是痛苦的,那么重构。是的,这样做更容易接受。这是一个非常蹩脚的答案。我经常和我的团队交谈。我们的代码库是模块化的。我们知道什么时候有人在更改API。这是一个蹩脚的答案。什么团队不沟通这些事情?什么理智的风投不会让你在本地合并?谁没有常识?这就是它的定义。为什么不说“是的,TDD有帮助,因为当出现语义问题时,单元测试将使构建失败”?因为你不知道在哪里加粗?有些人认为风投是交流的替代品。如果你认为这是不可能的,那就看看吧。