开发环境和生产环境的配置文件不同,这个问题是很常见的。以前的解决方案是将它们设到.gitignore 中忽略。最近遇到一个项目,不仅是配置文件,项目中有许多文件都是有区别的,并且需要部署到多个生产环境,这个时候设忽略文件就不好控制了。这个时候 Git 有没有什么方法能够将文件纳入版本控制,并且不会互相覆盖。现在能想到的方法是开多个分支或者做各种补丁。
另外一个问题,有一个 JS 的小项目 A,以这个为基础给多个不同的项目 X/Y/Z 之类,做模块或者是插件。如果项目 A 更新,项目 X/Y/Z 能够同步更新,最好能够带参数,比如说只更新 X 之类的。这个感觉很类似 rails 的 gem,但是这些项目不都是 rails 的可能是 PHP、JAVA。所以需要 git 来控制。这个问题现在能想到的方法也是开多个分支或者做各种补丁。
这两个问题其实也可以说是同一个问题,区别就在于,一个允许覆盖,一个不允许覆盖。Git 有能不能设置一个权限列表,在某些项目中允许覆盖 a,b,c 这些文件,在另外一个项目就只允许覆盖 a,b 这些文件。
大家遇到类似的问题是怎么解决的呢?