Git 关于 Git 的一些问题

tuliang · March 21, 2013 · Last by Saito replied at March 21, 2013 · 3063 hits

开发环境和生产环境的配置文件不同,这个问题是很常见的。以前的解决方案是将它们设到.gitignore 中忽略。最近遇到一个项目,不仅是配置文件,项目中有许多文件都是有区别的,并且需要部署到多个生产环境,这个时候设忽略文件就不好控制了。这个时候 Git 有没有什么方法能够将文件纳入版本控制,并且不会互相覆盖。现在能想到的方法是开多个分支或者做各种补丁。

另外一个问题,有一个 JS 的小项目 A,以这个为基础给多个不同的项目 X/Y/Z 之类,做模块或者是插件。如果项目 A 更新,项目 X/Y/Z 能够同步更新,最好能够带参数,比如说只更新 X 之类的。这个感觉很类似 rails 的 gem,但是这些项目不都是 rails 的可能是 PHP、JAVA。所以需要 git 来控制。这个问题现在能想到的方法也是开多个分支或者做各种补丁。

这两个问题其实也可以说是同一个问题,区别就在于,一个允许覆盖,一个不允许覆盖。Git 有能不能设置一个权限列表,在某些项目中允许覆盖 a,b,c 这些文件,在另外一个项目就只允许覆盖 a,b 这些文件。

大家遇到类似的问题是怎么解决的呢?

加入版本管理又不好覆盖的....可以 gitignore 添加,add -f 加入文件,但感觉也不够保险...前者应该是配置文件在生产环境的专门管理而不要在源代码版本管理的问题?

项目依赖的版本管理除了特定语言自己的分发机制(比如 ruby 的 gems,比如 python 的 distribute)外 可以看一下 git 的 submodule

第一个问题是 Chef / Puppet 的作用范畴,配置文件由这种工具统一处理。

第二个问题是 JS Component 的问题,建议用前端模块加载器解决。试试 bower, 推荐 component/component

这些跟 Git 没什么本质的联系。

You need to Sign in before reply, if you don't have an account, please Sign up first.