关于 git 工作流的一个疑问 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
dvsilch
V2EX    问与答

关于 git 工作流的一个疑问

  •  
  •   dvsilch 2021 年 9 月 26 日 1815 次点击
    这是一个创建于 1577 天前的主题,其中的信息可能已经有所发展或是发生改变。

    目前有两个分支开发中,一个是 feature/i18n 国际化,另一个就叫 feature/A 吧

    最近将这两个分支合并到了 release/test 上进行测试,然后发现 feature/A 需要补充国际化的文案。在这种情况下应该在什么分支上进行修改呢?按照 leader 的说法特性分支应该就在对应的特性分支上修改,但是对于「需要修改的部分依赖多个分支」的情况,各位会如何处理?亦或者是我对 git 工作流存在误解?望诸位解答

    8 条回复    2021-09-27 13:31:00 +08:00
    kiritoxf
        1
    kiritoxf  
       2021 年 9 月 26 日
    feature/i18n 还没往 master 啥的上面合吧,感觉 release/test 只是个预测试的分支?如果这样的话就在 feature/i18n 上直接改呗
    如果需要修改的部分还依赖 feature/A 的话,那肯定不能在 i18n 上改了,因为都没有那部分
    如果已经往 master 这种分支上合过的话,原则上合的同时会删掉原分支,这时候再建个 fix 分支改
    dvsilch
        2
    dvsilch  
    OP
       2021 年 9 月 26 日
    @kiritoxf 是的,目前并没有合到 master

    目前需要修改的部分同时依赖 feature/i18n 和 feature/A (因为是 feature/A 的新文案,但 feature/i18n 负责语言切换以及使用插值表达式),这种情况下要如何进行修改才不会打乱 git 工作流,保证分支干净呢?
    xaoflysho
        3
    xaoflysho  
       2021 年 9 月 26 日   1
    如果是标准的 Git 工作流,是有 develop 分支的吧,先将 feature/A 合并至 develop 分支,然后 feature/i18n 拉取 develop 分支做国际化,完成后合并至 develop 。要发布的 release 分支也是从最新的 develop 分支出来的
    dvsilch
        4
    dvsilch  
    OP
       2021 年 9 月 26 日
    @xaoflysho 原来如此,我这边是少掉一个 dev 的分支,导致我无论怎么想都很奇怪。或许我们 leader 的想法是使用 release/test 作为一个 dev 分支去使用?总之非常感谢!
    liuzhaowei55
        5
    liuzhaowei55  
       2021 年 9 月 27 日 via Android
    @xaoflysho 如果 develop 中同时有其他的开发代码 feature/i18n 上线就会携带上了。
    应该都从线上 release 切出各自开发,一起合到 release/test 分支去测试,如果出现迭代依赖的情况就确认一下对方的上线时间,确保对方比你早上线,可以考虑等对方上线了再 rebase release 然后做这部分需求,或者 merge 对方代码到自己的分支,做这部分开发,只要保证对方先上线就行了。
    感觉这和开发中的循环依赖差不多了,尽量避免
    xaoflysho
        6
    xaoflysho  
       2021 年 9 月 27 日
    @liuzhaowei55

    在 Git 工作流中,develop 分支做为保留分支,始终是只合并已完成功能的,也就说,要合并到 develop 分支的 feature 分支,要保证功能完成且项目可正常运行。如果管理严格一些的话,develop 分支还会有权限,要合并至 develop 需要提 PR,并进行 Code Review 。

    “如果 develop 中同时有其他的开发代码 feature/i18n 上线就会携带上了。”
    这是必然的,develop 分支的作用就是如此,合并所有已完成功能分支,所有新的功能分支、预发布分支都是基于 develop 分支的。
    这里 feature/i18n 作为功能分支之一,自然应基于 develop 分支。这样在 feature/i18n 分支中,就可以做所有已完成功能的国际化开发。完成后也需要合并回 develop 分支,feature/i18n 分支删除。下次需要新的国际化开发,从 develop 分支拉取新的 feature/i18n 分支。

    “应该都从线上 release 切出各自开发,一起合到 release/test 分支去测试”
    不应从 release 分支检出,应从最新的 develop 分支检出。在 Git 工作流中,release 分支是临时分支,基于 develop 分支。在 release 分支完成测试后合并至 master 分支和 develop 分支,release 分支删除。此时,master 分支和 develop 分支代码一致。生产环境代码与 master 分支一致。后面的开发将基于此时的 develop 分支进行。
    在 Git 工作流中,一般仅保留 master 和 develop 两个分支,其他分支在完成开发并合并后,将被删除。master 分支上的代码始终与生产环境一致。

    “如果出现迭代依赖的情况就确认一下对方的上线时间,确保对方比你早上线”
    如果出现此种情况,需要对方先合并至 develop 分支,你才能依赖于对方的工作开发。此时也保证对方功能不会晚于你上线。

    “或者 merge 对方代码到自己的分支,做这部分开发”
    不建议 merge 至自己的分支开发,这样会导致功能分支混乱,增加 code review 工作。
    xaoflysho
        7
    xaoflysho  
       2021 年 9 月 27 日
    liuzhaowei55
        8
    liuzhaowei55  
       2021 年 9 月 27 日 via Android
    @xaoflysho 然而现实中不太可能存在一个随时可以上线的 develop 分支,基本是一个迭代相关的项目约定时间同时上线,gitflow 更适合单体项目,多部门协同开发中不太实用。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3564 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 04:26 PVG 12:26 LAX 20:26 JFK 23:26
    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