Merge 分支时,如何保持指定的文件不被 Merge?
就像SO上这个问题描述的场景: http://stackoverflow.com/questions/928646/how-do-i-tell-git-to-always-select-my-local-version-for-conflicted-merges-on-a-sp
有两个分支,每个分支使用不同的配置,例如:
config.txt (on release branch):
database = 10.9.8.7
config.txt (on develop branch):
database = 192.168.0.1
当需要把develop分支的功能合并到release分支时,不希望config文件被合并;
有以下几种解决方案:
- 使用merge strategy;创建一个merge driver,对指定的文件使用指定的merge strategy;
缺点:文件无改动时,merge driver不会启动,还是会被合并;rebase不管用; - 提交时,使用assume-unchanged;
缺点:提交时需要时刻关注文件改动; - 使用subtree(submodule)
不知道大家有没什么建议?
http://blog.miniasp.com/post/2014/12/23/Git-Advanced-Assume-Unchanged-Skip-worktree.aspx
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
环境不同的配置文件的话放在不同的文件中比较容易维护
代码里面做环境判断(常见的方式有IP、hostname、环境变量等)分别读取不同的配置
进一步的方案是专门有配置中心负责下发配置,有驻守精灵负责找配置中心拉配置、缓存配置、配合中心更新配置等
总之个人觉得通过分支不同来维护不同环境的配置事倍功半……如果再加上测试环境、预发布环境,甚至可能还有单元测试环境、沙盒环境等等,3份以上不同配置如果还是用分支维护的话基本上就崩溃了吧……一定要搞的话推荐模仿
phpunit.xml.dist
的形式,gitignore掉config.txt
,然后维护正式的config.txt.dist
,代码里优先读config.txt
,然后读config.txt.dist