在几个项目中,我需要有两个完全相同的分支/ repos,除了我希望一个提交出现在一个分支而不是另一个分支中(例如,因为我正在关注的git repo没有设置我的机器的良好环境变量,或者因为一个分支特定于给定的操作系统而另一个分支是另一个系统,但两个分支之间的差异只是几行...)。
在理想的世界中,我想在修改它时自动将更改应用到其他分支,或者,对于repos,当上游repo更新时。
我看到一些涉及git钩子的技巧,但是钩子只是给定计算机的本地,所以如果我克隆了repo,我需要手动重新创建钩子文件......
对于使用content filter driver的.gitattributes
declaration来说,这是一个很好的例子。
这意味着您不会对实际值文件进行版本控制,而只会对模板文件和每个环境具有所有可能值的文件进行版本控制。
(图片来自“Customizing Git - Git Attributes”,来自“Pro Git book”)
生成的实际文件仍然被忽略(由.gitignore
)。
这意味着您的实际工作树不会“脏”。
smudge
脚本:
smudge
期间应用git checkout
脚本的模板生成正确的文件。