Git 多个分支分别对应不同网站,如何管理和更新? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
iguoji
V2EX    程序员

Git 多个分支分别对应不同网站,如何管理和更新?

  •  
  •   iguoji 2017-11-07 17:15:53 +08:00 5952 次点击
    这是一个创建于 2924 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在主分支 Master 开发到一定阶段后,创建了 A、B、C 三个新分支

    四者对应着四个网站,都有相同和不同的地方

    有些相同的地方在更新好一个分支后,又需要依次推送到其他分支

    有什么解决办法吗?

    25 条回复    2017-11-08 16:57:29 +08:00
    azygote
        1
    azygote  
       2017-11-07 17:28:33 +08:00
    分支不是这么用的,你的需求可以考虑把整个系统模块化。
    shiina
        2
    shiina  
       2017-11-07 17:31:24 +08:00   1
    错误的分支使用方式
    vikeria
        3
    vikeria  
       2017-11-07 17:31:38 +08:00
    楼上加一
    secends
        4
    secends  
       2017-11-07 17:32:43 +08:00
    参考这个命令 git push origin HEAD:master, 看 git help push
    iguoji
        5
    iguoji  
    OP
       2017-11-07 17:38:42 +08:00
    @azygote
    @shiina
    @vikeria
    @secends

    没懂,求指点。
    azygote
        6
    azygote  
       2017-11-07 17:42:41 +08:00 via iPhone
    @iguoji 把整个系统模块化,四个网站可以共用一部分模块,然后四个网站不同的功能用分别开发不同的模块(同一分支下)。如果做不到那还是老老实实分成 4 个 git 仓库吧。
    flowci
        7
    flowci  
       2017-11-07 17:47:02 +08:00
    一个项目一个仓库,一个项目多个分支。
    cxbig
        8
    cxbig  
       2017-11-07 17:47:56 +08:00
    最好是遵循 Git Flow,且一个项目一个 repo。
    共用的部分做成独立模块,用 submodule、cherry-pick 或各语言的包管理器加载
    mooncakejs
        9
    mooncakejs  
       2017-11-07 17:49:26 +08:00
    如果有不涉及二次开发的公共代码模块,开 4 个项目,用 submodule
    4 个项目可以自己选择公共项目的版本,要升级就 update submodule。
    开 4 个分支也行,新功能也开分支,然后分别合并到二次开发版本。
    ryd994
        10
    ryd994  
       2017-11-07 18:34:27 +08:00 via Android
    理论上可以在 master 改了再 cherry pick
    但是长远来讲可能会很复杂也很危险
    还是 submodule 吧,现在跑还来得及
    l8mEQ331
        11
    l8mEQ331  
       2017-11-07 19:14:05 +08:00
    我现在管理的公司的一个 MTK rom 也是这种情况,有多个版本, 每个版本都是一个分支。每次加一些功能或者改东西,有可能是所有版本都要加,有可能是只是某些版本加。现在的做法是用 cherry-pick 来手动的每个版本加上新的功能。
    yidinghe
        12
    yidinghe  
       2017-11-07 20:40:17 +08:00
    每个分支一个远程啊……那敲命令太复杂了,装 SourceTree 之类的图形客户端吧。
    satanandroid
        13
    satanandroid  
       2017-11-07 20:54:42 +08:00
    公共部分 用 submodule 啊~
    xem
        14
    xem  
       2017-11-07 23:08:14 +08:00
    把公共模块单独建立项目,然后再把各个网站单独建立项目,包含各个公共模块项目
    SoloCompany
        15
    SoloCompany  
       2017-11-08 00:51:20 +08:00
    两个选择
    1. 模块化,提取公共抽象为 1~n 个模块( repo ),其余部分每个网站一个 repo
    2. 实在不适合模块化,那么就让 4 个网站共用一套代码,通过 domain name 或配置来进行差异化渲染
    colorwin
        16
    colorwin  
       2017-11-08 01:40:33 +08:00 via Android
    可能不是最好的方法但比较简单。从 master 分支切出一个 common 分支,开发好功能好后 merge 到需要该功能的分支
    66beta
        17
    66beta  
       2017-11-08 09:02:25 +08:00
    你的情况,算是多个 master 分支...
    可以把公共代码抽出来放一个文件夹,4 个网站 4 个文件夹,改什么就拉一个 feature 分支,改完合回去,互相不影响

    跟你类似的业务情况
    vue-cli 分网站(渠道),多页面打包+vue-router,共享基础 JS 库和组件库
    打包完后:
    a.html
    b.html
    c.html
    d.html
    static(文件夹)
    asuraa
        18
    asuraa  
       2017-11-08 09:11:07 +08:00
    yuhr123
        19
    yuhr123  
       2017-11-08 09:16:35 +08:00
    一个站点一个仓库! git 又不是租来的,楼主怎么还舍不得用啊。

    小规模多人协作:所有人 dev 分支开发,PR 合并到主仓库 master。
    独立开发:本地 master 开发,测试无误 push 到仓库。

    本人喜欢拿分支做临时性实验,用后立即销毁,不愿意管理分支,主要是因为懒。
    allce231
        20
    allce231  
       2017-11-08 09:53:44 +08:00
    你们说开 4 个仓库的脑袋被门夹了?

    他们有的需求可能是 4 个分支都要改的,那这样可以在 master 改了合并过去,4 个仓库的每个仓库改一次吗?
    crazystory
        21
    crazystory  
       2017-11-08 10:45:07 +08:00
    4 个不同项目放一个仓库才是脑袋被门夹了
    crazystory
        22
    crazystory  
       2017-11-08 10:46:10 +08:00
    何况公共部分可以用 submodule 只改一个仓库就行了
    zjsxwc
        23
    zjsxwc  
       2017-11-08 13:16:31 +08:00
    可以同一个分支搞 4 个入口对应 4 个网站不就解决楼主的问题了吗, 其实 4 个网站就是 4 个 feature, 合并后每个分支也都应该有这个 4 个 feature
    i2000s
        24
    i2000s  
       2017-11-08 15:58:28 +08:00
    推荐用不同的库做不同的网站,各个库可以使用同一个域名。
    比如我的网站主库在 github.com/i2000s/i2000s.github.io,英文页面在 github.com/i2000s/en,中文网站在 github.com/i2000s/cn。他们共用一个域名,应为站点在 /en 目录,中文的在/ cn 目录。各个站点间实际上都是来源于主站的代码,理论上可以 fork,但是我只是添加了主站地址作为各个站点的 remote,这样核心站点代码有更新后,可以方便 push 到其他站点。仅供参考。
    yuriko
        25
    yuriko  
       2017-11-08 16:57:29 +08:00
    1.建议共用代码,通过不同网站的配置去决定怎么运作
    2.实在要分开处理,那么 git 命令的 origin 字段就是指的远程主机,除去 origin 给每个主机定一个对应的别名,操作的时候带上就能 push 到对应的机器了
    由于 git 本质是个分布式代码仓,三台主机各不相同,再加上本地开发困难,如果不另设一个服务器汇总做基准,估计会乱爆炸。
    3.模块化,每个模块开一个仓,不同站点用不同仓的组合。Google 做 Android 的时候用的工具叫 repo,每个 repo 仓可以根据需要组合对应的 git 仓,比如 repoA ( gitA、gitB ),repoB ( gitA、gitC )这样
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5373 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 07:45 PVG 15:45 LAX 23:45 JFK 02:45
    Do have faith in what you're doing.
    ubao msn 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