Git中如何强制CHANGELOG.md手动三方合并且保留文本diff?
解决CHANGELOG.md并行修改的合并与文本识别问题
背景
在软件开发过程中,多名开发者常同时修改CHANGELOG.md文件。假设master分支初始内容如下:
## Unreleased change X change Y
其中一个分支创建了新版本:
## Unreleased ## [1.0.0] - 2023-01-27 change X change Y
另一个分支新增了change Z:
## Unreleased change X change Y change Z
若变更分支在发布分支之后合并,自动合并后的CHANGELOG.md会错误地将change Z放在版本项下,而正确的内容应为:
## Unreleased change Z ## [1.0.0] - 2023-01-27 change X change Y
需求
- 当
CHANGELOG.md出现并行修改时,强制开发者手动完成三方合并 - 让VSCode将该文件识别为文本文件,且团队成员克隆仓库后无需执行额外手动步骤
已尝试方案
添加.gitattributes文件并配置CHANGELOG.md -merge diff,该配置虽能触发强制合并,但文件会被视为二进制文件,即便设置了diff属性仍无法正常查看文本差异,暂未找到同时满足以下两个条件的配置:
- 支持以文本形式查看差异
- 强制手动解决三方合并冲突
解决方案
在仓库根目录的.gitattributes文件中添加以下配置:
CHANGELOG.md text diff merge=none
各属性作用说明:
text:强制Git将该文件标记为文本文件,确保VSCode以文本格式打开它,团队成员克隆仓库后无需额外配置diff:允许Git以文本形式计算并展示该文件的差异内容merge=none:禁止Git自动合并该文件的并行修改,一旦出现合并冲突,直接要求开发者手动处理三方合并
该配置可同时满足你提出的两个核心需求。
内容的提问来源于stack exchange,提问作者Mick
相关产品推荐
相关产品推荐

