从git中的分支间合并中排除一些文件

时间:2017-07-15 05:27:50

标签: git merge

我有几个文件(一个pom.xml和一个appengine-web.xml(GAE配置文件)),我希望在同一个项目的不同分支中保持不同的状态。

之前已经提出了类似的问题,我之前看到过的两个解决方案是:

  • git merge --no-commit from-branch,和
  • 在同一个目录中创建文件.gitattributes,使用以下行:filename.ext merge=ours(释义)

如果在合并期间发生冲突,这两者都只保护当前分支中的文件免于合并。在FF合并的情况下,当前分支中的版本被覆盖。我希望即使在FF合并的情况下也不会覆盖这些文件。

除非通过特定于文件的命令调用,否则是否有办法保护当前分支中的版本不会被合并覆盖?

我目前正在尝试不检查每个分支文件,将它们放在存储上,然后当我回到分支时从那里恢复。是否有更高效,更少故障的方式?

1 个答案:

答案 0 :(得分:2)

另一种方法是:

  • 追踪pom.xml
  • 跟踪pom.xml.masterpom.xml.mybranch:这样,任何合并都不会影响它们,因为它们的名称不同。

然后,您可以进行版本和跟踪:

  • 每个分支一个pom.xml(在所述分支后面有一个命名约定)。
  • 一个脚本,能够根据当前分支获取正确的pom.xml.<abranch>文件,并生成pom.xml文件(保留未跟踪,私有)
  • 一个.gitignore忽略生成的pom.xml文件
  • a .gitattribute声明污迹内容过滤器(见下文)

使用content filter driver通过 .gitattributes declaration 自动生成实际pom.xml

https://i.stack.imgur.com/tumAc.png
(来自"Customizing Git - Git Attributes"的图片来自&#34; Pro Git book&#34;))

在您的本地配置中声明该内容文件管理器驱动程序后,它会自动在git checkout为您生成pom.xml文件。
请参阅&#34; Best practice - Git + Build automation - Keeping configs separate&#34;。

中的完整示例

appengine-web.xml文件重复相同的想法。