使用Git,是否可以为多个开发人员之间的单个合并拆分合并冲突解决方案?

Pav*_*kov 8 git git-merge

一些背景:

目前在CVS上,并希望转移到Git.我们每个月左右为我们复杂的定制内部平台做计划发布.

在当前的开发工作流程中,我们有多个分支,每个分支都针对我们的计划发布,例如:

  • 发布7000,可能会在5月份发布
  • 发布7100,可能会在8月份发布
  • 发布7200,可能会在9月份发布

(我们可以同时处理六个计划发布的版本).

我们还为已经没有发布日期的大型项目命名了项目分支.当日期已知时,它们最终会合并到选定的计划发布分支中.

每个版本都非常庞大(许多功能),因为版本需要中断,我们不能经常使用它们,我们确实可以每个月左右批准一次发布停机时间.

随之而来的是合并冲突.我们有一个CVS报告,它提供了要完成的手动合并列表,我们在几个开发人员之间分配了工作.有没有办法用Git做同样的事情 - 在多个开发人员之间将合并工作从一个分支拆分到另一个分支(导致许多冲突)?

编辑:

这就是我最终做的事情(注意我们使用Atlassian Stash/BitBucket Server进行拉取请求/代码审查):

  • 合并守护程序:从目标分支创建新的"手动合并"分支
  • 合并守护程序:启动合并以获取冲突列表
  • 合并守护程序:通知管理器并等待解决冲突
  • 经理:划分开发人员之间的冲突
  • 开发人员:每个开发人员从合并分支创建并检出"功能"分支,然后开始将源标记合并到其功能分支 - 他们在其环境中获得冲突.它们仅针对它们负责的文件解决冲突,然后执行软重置以中止合并,并仅提交它们解析的文件.然后他们将他们的功能分支(带有评论)合并到"手动合并"分支.
  • 合并守护程序:一旦开发人员解决了冲突,请从"手动合并"分支(仅更改的文件)中检出已修改的文件.此时应解决所有手动冲突.承诺并推动.

Aar*_*ger 1

这是一种方法:

  1. 开始合并
  2. 用于git diff --name-only --diff-filter=U打印合并冲突列表
  3. 用于git reset --hard HEAD重置到开始合并之前

但是,最好不要让这些事情累积起来,而不是进行大规模的冲突解决练习,这可能会引入更多错误。

您可以通过从 中创建7100一个分支来代替,并定期变基或合并到 中来做到这一点。7000master70007100

您还可以通过将每个功能保留在单独的分支(feature-afeature-b等)上来做到这一点,并在您接近发布版本并且确定其中会包含什么内容时将它们一次合并到一个分支中。