Git 关于 Git 的一些问题

tuliang · 2013年03月21日 · 最后由 Saito 回复于 2013年03月21日 · 2245 次阅读

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

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

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

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

共收到 2 条回复

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

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

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

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

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

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册