请教大家一个 git 合并的问题

2017-03-06 16:32:25 +08:00
 LinusTor
是这样的.我有两个分支.master 和 dev.dev 主要是开发用的.然后 master 是用来线上正式使用的.一般是 dev 开发测试完直接合并到 master 分支上.

但是有这样的问题.就是有一些配置文件 dev 分支和 master 是不一样的,因为 dev 是用来本地开发等,而 master 是用于线上发布的.所以配置是线上的配置.这样每次合并 dev 分支到 master 都要修改下配置.或者 dev 提交的时候把配置部分给回滚掉.然后再提交合并到 master.

每次这样都感觉好烦.请问下大家有没有什么好一点的解决方案.
5395 次点击
所在节点    git
33 条回复
crayygy
2017-03-06 18:10:59 +08:00
我一般的解决方法是加到 ignore ,不过 Rails 给我一个启发,可以存同一个文件, production 和 development 分别用文件内的不同数据就好了。调用的时候声明一下当前环境再决定加载哪部分。
sarices
2017-03-06 18:12:09 +08:00
@liangliangyy 配置文件别人也能修改那个是你们管理的问题了,部署我觉得最起码应该停止网站切换到维护模式,更新代码,然后更新配置文件等等,最后再重新开启。
scriptB0y
2017-03-06 18:12:25 +08:00
我在 django 的做法是:

settings 里面根据环境不同的配置(例如 debug ),使用从别的文件 import 的方式。这个文件本地、服务器各一份, gitignore 忽略。

另外,不要用 master 发布,从 master checkout 一个 release 分支,每次觉得可以发布就用 release 分支从 master 合并, 并且打上 tag ,这样可以保证快速回滚。
nicevar
2017-03-06 18:18:42 +08:00
这个需求与 git 没多大关系,不管你是做前段后端还是客户端开发,测试和正式环境都能通过配置来解决的, maven 的 properties 、 gradle 的 build variant ,尽量配置成不依赖特定环境的最省事
LinusTor
2017-03-06 18:20:34 +08:00
@sarices 嗯哈 抱歉没表达清楚.我说的是在开发时候.配置文件更新了.然后别人开发的时候为了代码同步环境统一.肯定也要更新配置文件.这样如果没有在仓库里面的话只能靠手动更新了.
LinusTor
2017-03-06 18:22:52 +08:00
@nicevar 嗯嗯是的哈.是想寻找有没有那种不同分支合并的时候忽略调某一些文件或者某几行.这样就直接可以解决了.

不过貌似使用环境变量也可以完美解决.
bearzk
2017-03-06 18:31:56 +08:00
我的方法是 production, staging, local 都有不同的 config 文件,根据 env 使用一种, local config 被 `.gitignore` 忽略

还有推荐使用 gitflow https://github.com/petervanderdoes/gitflow-avh `master`, `develop`, `feature/*` 管理起来比较方便 也有方便的 release 流程
TIGERB
2017-03-06 18:46:15 +08:00
部署的时候初始化不同环境的配置文件么
Waterm
2017-03-06 18:56:15 +08:00
@bearzk 我也是用这种方法的。这样一来可以灵活配置自己本地的调试环境,二来进行多人协作时别人也能区分清楚。如果是做些个人小项目直接 gitignore 吧。
SoloCompany
2017-03-06 21:01:56 +08:00
出发点就不对,代码分支不应该和配置沾上任何关系,如果你的配置足够复杂,可以把配置单独建一个 repo

如果只是简单的配置,而且不存在敏感数据,可以所有配置都放到源码里面,执行的时候根据执行环境动态决定加载哪一套配置
cxbig
2017-03-06 21:34:20 +08:00
@sarices 现在比较推崇无缝部署,如 Capistrano 等自动部署工具或 Blue-Green-Deployment 等策略。切换到维护模式越少越好。
Felldeadbird
2017-03-07 12:24:55 +08:00
开发的版本库不要和配置有任何直接的挂钩。否则团队其他成员一旦不知情下修改了。那些配置信息也被同步到生产环境中,将会带来严重的影响。
ubear1991
2017-03-07 13:18:51 +08:00
用不同的配置文件。 master 就用 master 结尾的, dev 就用 dev 结尾的。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/345353

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX