Merge 分支时,如何保持指定的文件不被 Merge? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
git
Pro Git
Atlassian Git Tutorial
Pro Git 简体中文翻译
GitX
imwower
V2EX    git

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

  •  1
     
  •   imwower 2015-02-12 11:05:26 +08:00 5477 次点击
    这是一个创建于 3897 天前的主题,其中的信息可能已经有所发展或是发生改变。

    就像SO上这个问题描述的场景: http://stackoverflow.com/questions/928646/how-do-i-tell-git-to-always-select-my-local-version-for-conflicted-merges-on-a-sp

    有两个分支,每个分支使用不同的配置,例如:
    bash
    config.txt (on release branch):
    database = 10.9.8.7

    bash
    config.txt (on develop branch):
    database = 192.168.0.1

    当需要把develop分支的功能合并到release分支时,不希望config文件被合并;
    有以下几种解决方案:
    - 使用merge strategy;创建一个merge driver,对指定的文件使用指定的merge strategy;
    缺点:- 文件无改动时,merge driver不会启动,还是会被合并;
    - rebase不管用;
    - 提交时,使用assume-unchanged;
    缺点:- 1. 提交时需要时刻关注文件改动;
    - 使用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

    7 条回复    2015-02-13 09:42:41 +08:00
    revlis7
        1
    revlis7  
       2015-02-12 11:25:36 +08:00   1
    添加config.txt到.gitignore

    在repo中只包含:
    config.txt.release
    config.txt.develop
    cloudzhou
        2
    cloudzhou  
       2015-02-12 11:27:53 +08:00   1
    大部分情况下,不想代码管理做得这么复杂,我希望使用最简单的几个操作而已。
    针对你的情况,我的建议是这样的,使用动态配置,配置文件并不作为版本控制内容,事实上,配置文件本来就不合适放在版本控制里。
    举个例子,在 Django 开发中,settings.py 线上和线下都不一样,所以我不把这个文件放入版本控制。
    我的做法是创建一个文件 settings.tmpl, 在下面有 env.ini
    > cat env.ini
    [env]
    debug = True
    user = user
    password = password
    ...
    > cat settings.tmpl
    DEBUG = ${debug}
    ...

    使用 ConfigParser, Template 来动态渲染,(import ConfigParser, from string import Template)
    然后使用脚本控制环境是什么状态,或者在运行的时候生成 settings.py
    9hills
        3
    9hills  
       2015-02-12 12:16:20 +08:00
    你需要配置模版和配置派生。repo中不存配置信息,只存配置模版

    具体的派生项,单独存放
    vivisidea
        4
    vivisidea  
       2015-02-12 13:25:23 +08:00
    楼主的问题是不是可以理解成线上/线下的配置文件管理问题
    以 Java 的 maven 项目为例,我们配置文件是这么放的

    src/main/resources/

    conf.properties -- 本地开发配置文件
    conf/test/conf.properties -- 测试环境配置文件
    conf/online/conf.properties -- 线上环境配置文件

    然后由部署脚本(ant + build.xml)来决定用哪个配置文件
    通常都不是从仓库 clone 出来直接运行代码的吧,一般都要编译,打个包,压缩下 js 文件等
    多一步选择配置文件也是很合理的事情。。。
    jasonslyvia
        5
    jasonslyvia  
       2015-02-12 14:34:42 +08:00
    两份配置,根据环境变量不同加载不同的文件
    zlandjj
        6
    zlandjj  
       2015-02-12 15:42:12 +08:00
    设置ingenore文件不行么?
    imwower
        7
    imwower  
    OP
       2015-02-13 09:42:41 +08:00
    谢谢各位~就不一一@了
    大概了解这个流程了,不应该把部署的流程和开发的流程混淆;
    在部署时,都需要对生产环境的配置手动处理
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5837 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 02:58 PVG 10:58 LAX 19:58 JFK 22:58
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86