GIT合并 - 保持一个分支的特定部分和另一个分支的其他部分

Tra*_*eur 5 git git-merge

这是场景

主分公司

- 文件名:xxx-master.txt

- 文件内容:

code code ID=01 code code code

开发分支

- 文件名:xxx-dev.txt

- 文件内容:

code code ID=02 code code code

将master合并到dev中时,我想保留xxx-dev.txt作为文件名,ID = 02,但是其他一切都来自master.当将dev合并为master时,反之亦然.这是我能让GIT理解的吗?

Von*_*onC 3

这通常是您需要根据分支保留(对于给定文件,此处xxx-dev.txt不同内容的情况,一种方法是:

  • 版本只是一个模板文件xxx-dev.tpl
  • 以分支命名的版本值文件:xxx-dev.dev, xxx-dev.master: 因为它们不同,所以不存在合并问题。

为此,您将在子模块存储库中注册(在.gitattributes声明中)内容过滤器驱动程序

弄脏 (图片来自《自定义 Git - Git 属性》,来自《Pro Git book》)

smudge与模板文件 ( *-dev.txt) 关联的脚本将通过查找正确值文件中的值来生成(自动在)实际git checkout文件。生成的实际文件仍然被忽略(由)。 xxx-dev.txtxxx-dev.<branch>xxx-dev.txt.gitignore

请参阅“分支之间的 git smudge/clean 过滤器”中的完整示例。

您的smudge脚本可以通过以下方式确定签出分支的名称:

branch=$(git rev-parse --symbolic --abbrev-ref HEAD)
Run Code Online (Sandbox Code Playgroud)