Merge 分支时,如何保持指定的文件不被 Merge?

发布于 2022-08-31 21:01:41 字数 1561 浏览 8 评论 0

就像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文件被合并;
有以下几种解决方案:

  1. 使用merge strategy;创建一个merge driver,对指定的文件使用指定的merge strategy;
    缺点:文件无改动时,merge driver不会启动,还是会被合并;rebase不管用;
  2. 提交时,使用assume-unchanged;
    缺点:提交时需要时刻关注文件改动;
  3. 使用subtree(submodule)

不知道大家有没什么建议?

参考: http://stackoverflow.com/questions/928646/how-do-i-tell-git-to-always-select-my-local-version-for-conflicted-merges-on-a-sp

http://stackoverflow.com/questions/2250040/using-github-to-host-public-git-repositories-whilst-ensuring-that-sensitive-data#

http://blog.miniasp.com/post/2014/12/23/Git-Advanced-Assume-Unchanged-Skip-worktree.aspx

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

乱世争霸 2022-09-07 21:01:41

环境不同的配置文件的话放在不同的文件中比较容易维护

//config.txt
#默认生产环境
database = 10.9.8.7

//config.dev.txt
#开发环境
database = 192.168.0.1

//config.test.txt
#测试环境
database = xxx

代码里面做环境判断(常见的方式有IP、hostname、环境变量等)分别读取不同的配置

进一步的方案是专门有配置中心负责下发配置,有驻守精灵负责找配置中心拉配置、缓存配置、配合中心更新配置等

总之个人觉得通过分支不同来维护不同环境的配置事倍功半……如果再加上测试环境、预发布环境,甚至可能还有单元测试环境、沙盒环境等等,3份以上不同配置如果还是用分支维护的话基本上就崩溃了吧……一定要搞的话推荐模仿phpunit.xml.dist的形式,gitignore掉config.txt,然后维护正式的config.txt.dist,代码里优先读config.txt,然后读config.txt.dist

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文