使用 Git 大型代码库和多个开发人员的多次提交

Working with Git with a large code base and multiple commits by multiple developers

我和我的开发团队开始 运行 处理一些问题,而不是 git。我们都在同一个分支 mysql_trunk 工作。我们不断 运行 推入冲突和合并冲突。

我们使用 git 很舒服,但我们觉得这里遗漏了一些东西。必须有一种更有效的方法来处理大型代码库(150 万行代码),多个开发人员同时为同一个 repo 做出贡献。这似乎是一个相当直接的问题,但我们确实可以使用一些帮助来找到解决方案,以防止我们不断出现推送冲突、合并冲突、分离的 HEAD 冲突。

任何建议 and/or 阅读 material 将不胜感激。

鉴于 git 使用(并为)Linux 内核开发,1.5MLOC 似乎不是一个特别大的代码库(内核大约是其 10 倍大)。您的并发开发人员数量可能也比 Linux.

少得多

所以问题是,为什么您首先会遇到这些冲突?

无论如何,有很多方法可以避免合并冲突。这里有一些(灵感来自 4 Simple Tricks to Avoid Merge Conflicts

  • 经常提交,做最少的原子提交,经常提交。 (不要让代码文件的重新缩进破坏你的错误修复提交)

  • 确保使用相同的编码约定(尤其是空格)

  • 创建功能分支,但使它们短暂存在并尽快合并它们(分支与主干的分歧越小,发生冲突的可能性就越小)

  • 以模块化方式组织代码:如果从事 different/unrelated 任务的开发人员需要更改完全相同的代码行,那么您的代码组织就会出现问题 - 并且不会VCS 将能够帮助您。

  • 交流(如果你的代码已经是模块化的,那么确保使用相同代码的人一起工作而不是互相对抗;他们应该知道代码的哪些部分会在在不久的将来,所以他们可以阻止自己的更改)

  • 经常提交

  • 确保您只跟踪人工编辑的文件(没有二进制文件,没有文本构建工件(例如 autotools 文件)

  • 更频繁地提交