避免合并冲突的策略,例如在git中

时间:2016-01-06 14:58:49

标签: version-control merge-conflict-resolution

一个人附加或预先定位的文件经常会出现合并冲突。

E.g。我们在我们的存储库的顶层有一个ChangeLog.txt文件。每当有人进行实质性更改时,对ChangeLog.txt的客户友好描述都会被添加到ChangeLog.txt之前。这会导致频繁的合并冲突,因为不同的开发人员合并单独的更改,或者单个开发人员重新定义并更改提交顺序,从而UpgradeDatabaseSchema.pm更改顺序。

(我们还有一个ChangeLog.txt perl库,它同样具有N个条目pr。版本,它也容易出现合并冲突,但让我们坚持ChangeLog.txt)。

如何很好地避免这种合并冲突?

我唯一想到的是一个目录结构,而不是提交changeLog,我们将条目提交到单独文件中的changeLog/ v1.1/ fooFeature.txt bug-4524-fix.txt refactoredWhatever.txt v1.2/ bug-4522-fix.txt barFeature.txt removedFoobar.txt 目录:

ChangeLog.txt

然后让ChangeLog.txt从例如git log构建以某种方式连接这些文件(而不是在git中跟踪/提交ChangeLog.txt)。这有点麻烦......

我们还简要地考虑过仅使用ChangeLog.txt而不是git log,但不会因为受众群体不同:git log适用于开发人员,DataGrid适用于客户。此外,如果不改变git历史记录并打破每个人的分支,就无法轻易更改SN.Reload中提交的描述。

所以:

  • 与合并冲突一起生活
  • 使用目录结构而不是单个平面文件
  • 使用git log

还有其他方法可以忽略我们吗?

1 个答案:

答案 0 :(得分:2)

您还可以对单个文件使用“union”合并策略,如下所述:http://krlmlr.github.io/using-gitattributes-to-avoid-merge-conflicts/

只需在.gitattributes

中添加一行
ChangeLog.txt merge=union