使用 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 文件)
更频繁地提交
我和我的开发团队开始 运行 处理一些问题,而不是 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 文件)
更频繁地提交