定期附加或前置的文件容易发生合并冲突。
例如我们的存储库顶层有一个 ChangeLog.txt
文件。每当有人做出重大更改时,都会在 ChangeLog.txt
前面添加对客户友好的更改描述。这会导致频繁的合并冲突,因为不同的开发人员合并单独的更改,或者单个开发人员 rebase 并更改提交顺序,从而 ChangeLog.txt
更改顺序。
(我们还有一个 UpgradeDatabaseSchema.pm
perl 库,同样有 N 个条目。版本也往往会出现合并冲突,但让我们继续使用 ChangeLog.txt
)。
如何很好地避免此类合并冲突?
我唯一想到的是一个目录结构,我们不是提交 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
从例如构建以某种方式连接这些文件(而不是在 git 中跟踪/提交 ChangeLog.txt
)。这有点麻烦...
我们还短暂考虑过使用 git log
而不是 ChangeLog.txt
,但不会,因为受众不同:git log 是为开发人员准备的,而 ChangeLog.txt
供客户使用。此外,如果不更改 git 历史记录并破坏每个人的分支,就无法轻松更改 git log 中提交的描述。
所以:
- 接受合并冲突
- 使用目录结构而不是单个平面文件
- 使用 git 日志
还有我们忽略的其他方法吗?
最佳答案
您还可以对单个文件使用“联合”合并策略,如下所述:http://krlmlr.github.io/using-gitattributes-to-avoid-merge-conflicts/
只需向 .gitattributes 添加一行
ChangeLog.txt merge=union
关于version-control - 避免合并冲突的策略,例如在git中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34636177/