V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
git
Pro Git
Atlassian Git Tutorial
Pro Git 简体中文翻译
GitX
vencent
V2EX  ›  git

Git 能否实现两个 remote 自动配置不同的 ignore?

  •  
  •   vencent · 2017-07-14 08:29:59 +08:00 · 4695 次点击
    这是一个创建于 2724 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最近遇到一个我觉得还算常见的问题不知道怎么解决:本地有一个 git repo,我想每次 push 的时候提交一份不包含生产环境配置文件的到 GitHub 分享,同时把包含所有文件的 push 到生产环境服务器(即两个 remote 使用不同的 ignore 设置)

    大家有什么好方案吗?
    24 条回复    2017-08-14 19:51:11 +08:00
    misaka19000
        1
    misaka19000  
       2017-07-14 08:37:37 +08:00 via Android   ❤️ 1
    开两个不同的 branch
    340244120
        2
    340244120  
       2017-07-14 08:40:10 +08:00 via Android
    再开一个 repo,或者手动切换 ignore
    vencent
        3
    vencent  
    OP
       2017-07-14 08:42:38 +08:00
    补充:我使用 Tower 来管理 git
    ClassicOldSong
        4
    ClassicOldSong  
       2017-07-14 08:46:09 +08:00 via Android
    开两个不同的 branch 吧,每次 merge 一下
    mrcn
        5
    mrcn  
       2017-07-14 08:49:25 +08:00 via Android
    都不加入版本控制,参考 Laravel 的.env 文件
    一般来说环境配置这种东西很难有变动吧……
    gccdchen
        6
    gccdchen  
       2017-07-14 08:50:07 +08:00
    如果你配置不是常变的话 , 为什么不弄一份 config.xml.sample , 把 config.xml 加入 ignore
    crysislinux
        7
    crysislinux  
       2017-07-14 08:51:47 +08:00
    我们的配置文件都是单独写的,没在仓库里,仓库里一般放个配置文件的例子,比如 config.example.js 之类的
    az422
        8
    az422  
       2017-07-14 09:02:22 +08:00 via Android
    为什么不根据环境变量读取不同配置
    vencent
        9
    vencent  
    OP
       2017-07-14 09:04:08 +08:00
    @mrcn 确实配置文件不常改, 这个方法可以。不过我觉得这个需求也还算常见吧,git 居然没有提供这方面的支持
    yanhejihe
        10
    yanhejihe  
       2017-07-14 09:12:00 +08:00   ❤️ 1
    @vencent git 是为了文件一致性,不同的 repo 文件不一样,那还得了
    momocraft
        11
    momocraft  
       2017-07-14 09:21:45 +08:00
    ignore 是在 commit 之前有效的, push 是之后
    yanhejihe
        12
    yanhejihe  
       2017-07-14 09:25:01 +08:00
    最近我也在用 git 部署,感觉有点问题,资源文件和代码混到一起了,感觉 git 直接用来部署不是很好。有谁做过的分享一下?
    mooncakejs
        13
    mooncakejs  
       2017-07-14 09:28:01 +08:00 via iPhone
    @yanhejihe submodule。
    wsy2220
        14
    wsy2220  
       2017-07-14 09:33:21 +08:00
    配置文件用一个单独的 repo
    middleware
        15
    middleware  
       2017-07-14 10:08:50 +08:00
    不同的 remote 不是用来区分不同的内容的。因为 Git 区分不同内容的唯一方式就是 SHA-1。所以还是老老实实的 branching 才对。对 Git 来说,不同的物理位置根本不是区分内容的依据。
    shalk
        16
    shalk  
       2017-07-14 11:04:24 +08:00
    个人不推荐用 git push 来做部署,建议都保持一致,

    根据环境不同,生效的配置文件不同;
    或者用部署工具来处理;
    andyL
        17
    andyL  
       2017-07-14 12:37:43 +08:00
    两个 ignore 不能取个并集吗
    bombless
        18
    bombless  
       2017-07-14 14:14:48 +08:00
    建议配置直接 ignore 掉,不要放 repo 里面
    crazystory
        19
    crazystory  
       2017-07-14 14:34:12 +08:00
    配置文件忽略才是常见的,一般只保留配置模板不会保留具体的值
    marvinwilliam
        20
    marvinwilliam  
       2017-07-14 17:56:23 +08:00
    需要放到 github 上的作为 git-submodule, 全部文件作为主项目,放到另外一个仓库

    虽然 submodule 不是这么个用法,但应该可以满足你的需求....
    ryd994
        21
    ryd994  
       2017-07-14 19:38:34 +08:00
    配置文件单独部署
    或者开个 deploy branch 每次 rebase
    cxbig
        22
    cxbig  
       2017-07-14 22:01:47 +08:00
    配置文件单独部署啊,那么多自动部署工具,一个文件再容易不过。
    Miy4mori
        23
    Miy4mori  
       2017-07-15 21:07:01 +08:00 via iPhone
    难道生产环境的配置不都是加密在 CI 里的嘛?存仓库这事还真的干得出来?
    vencent
        24
    vencent  
    OP
       2017-08-14 19:51:11 +08:00
    @Miy4mori 本人对部署不太了解,希望寻求一些好思路。感谢各位。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2048 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 00:36 · PVG 08:36 · LAX 16:36 · JFK 19:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.