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

git 多人开发的一个疑问

  •  
  •   yujianwjj 2023-11-07 14:39:03 +08:00 3598 次点击
    这是一个创建于 703 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我同事开发的 feat_1 ,它的代码已经合到 develop 并且上线了,这个时候我的代码要上线,需要把我的代码合到 develop ,这个时候,最佳实践是啥?

    29 条回复    2023-11-08 14:29:01 +08:00
    BeautifulSoap
        1
    BeautifulSoap  
       2023-11-07 14:41:50 +08:00 via Android
    把最新的 develop 合并到 feat_2
    当然把 feat_2 给 rebase 到最新的 develop 也就
    BeautifulSoap
        2
    BeautifulSoap  
       2023-11-07 14:43:03 +08:00 via Android
    @BeautifulSoap 也就 -> 也行
    choah
        3
    choah  
       2023-11-07 14:43:31 +08:00
    在你的分支上 rebase develop
    cdswyda
        4
    cdswyda  
       2023-11-07 14:44:00 +08:00
    feat_1 能合并说明是 ok 的。
    假设你们上线的代码就是 develop 分支,你的 feat2 要上线,那么也一样 merge 回去就行。

    要是你的 feat2 要单独上线测试,走新部署 直接用你的 feat2
    iosyyy
        5
    iosyyy  
       2023-11-07 14:44:14 +08:00
    rebase 最新的代码 然后提交 review
    HankAviator
        6
    HankAviator  
       2023-11-07 14:46:13 +08:00
    觉得先 feat2 rebase develop 再 develop merge feat2 比较好
    Lin0936
        7
    Lin0936  
       2023-11-07 14:47:30 +08:00 via iPhone
    rebase 再 pr
    idealhs
        8
    idealhs  
       2023-11-07 14:48:13 +08:00
    这不是蛮基础的,你拉一下 develop 然后该推送推送该提 MR 提 MR 好了啊
    charlestang
        9
    charlestang  
       2023-11-07 14:53:28 +08:00
    feat_2 上线,理论上有这些问题:
    1. feat_2 与 feat_1 是否兼容?需要进行兼容性测试;
    2. feat_2 在合并回 develop 的时候,是否会引入新的风险因素?需要进行测试;

    根据你们团队的规范(有的是用 merge ,有的使用 rebase ),你需要:
    1. 先将 feat_2 集成到 develop ,确保即将上线的版本,既包含 feat_1 也包含 feat_2 ,然后进行集成测试;
    2. 发布 develop
    43n5Z6GyW39943pj
        10
    43n5Z6GyW39943pj  
       2023-11-07 14:56:56 +08:00
    这图画的什么呀?都是基于 dev 出来,把 feat_2 合到 dev 不就完事了?
    94
        11
    94  
       2023-11-07 14:57:53 +08:00
    就是正常的 PR 流程呀。
    wu67
        12
    wu67  
       2023-11-07 14:58:20 +08:00
    rebase/merge 呀, 或者 cherry pick 都行
    zengguibo
        13
    zengguibo  
       2023-11-07 15:06:22 +08:00
    git flow 工作流程,怎么弄都不会乱
    GBdG6clg2Jy17ua5
        14
    GBdG6clg2Jy17ua5  
       2023-11-07 15:08:36 +08:00
    我的最佳实践,直接将 feat_2 代码 merge 回 develop
    suiterchik
        15
    suiterchik  
       2023-11-07 15:19:51 +08:00
    根据你同事的 feat_1 是否需要跟着你的 feat_2 一起上线,有以下两种情况:

    1. 本次发布只紧急发布 feat_2, feat_1 不跟车发布,则对 master 发起 feat_2 的 merge request ,只发布 feat_2 ,后续 feat_1 需要发布的时候,对 develop 分支 rebase master 分支,相当于 commit 顺序是 develop -> feat_2 -> feat_1

    2. 本次发布同时带上 feat_1, feat_2 ,则对 feat_2 分支进行 rebase develop 操作,然后向 master 发起 feat_2 的 merge request 操作;或者先向 develop 发起 feat_2 的 merge request 操作,然后向 master 发起 develop 发起 merge request 。相当于 commit 顺序是 develop -> feat_1-> feat_2
    tedzhou1221
        16
    tedzhou1221  
       2023-11-07 16:48:14 +08:00
    我的理解和 #10 ,feat_2 合到 dev
    tedzhou1221
        17
    tedzhou1221  
       2023-11-07 16:49:00 +08:00
    除非有冲突,不然的话,直接合过去就好啦
    1018ji
        18
    1018ji  
       2023-11-07 18:03:46 +08:00
    feat_1 合到 develop 上线,不合 master ?


    feat_2 rebase develop ,然后 merge 到 develop
    pkoukk
        19
    pkoukk  
       2023-11-07 18:18:57 +08:00
    它都合进去了,分支理论上都删除了,你就当它不存在就完事了,直接往 dev 合就行啊
    rqzrqh
        20
    rqzrqh  
       2023-11-07 18:33:12 +08:00
    feat_2 先尝试能否 rebase develop ,如果能,走正常的分支合并流程。
    如果存在冲突 rebase 失败,从 develop 中拉一个分支 develop_tmp ,用 cherry-pick 的方式把 feat_2 的 commit 逐渐合并到 develop_tmp ,逐渐解决冲突,解决完毕后,把 develop_tmp 的代码合并到 develop 。
    无论哪种方式,合并后注意一下逻辑是否正常。
    hxzhouh1
        21
    hxzhouh1  
       2023-11-07 18:38:11 +08:00
    @angryfish 不应该是先 rebase develop 嘛? merge 还的解决冲突
    ccagml
        22
    ccagml  
       2023-11-07 19:00:17 +08:00 via Android
    先创建 pr 从 develop-> feat_2 ,解决完冲突,再创建 pr 从 feat_2 -> develop ,这样做会有什么问题吗?除了提交可能是 merge pull request from xxx
    itechify
        23
    itechify  
    PRO
       2023-11-07 20:43:57 +08:00 via Android
    不考虑 git log 的交叉。直接 f2 merge 到 develop 就行。有冲突就把 develop merge 到 f2 先,在 f2 分支解决冲突,最后再重复 f2 merge 到 develop 。
    pianjiao
        24
    pianjiao  
       2023-11-08 07:39:50 +08:00 via Android
    先更新后提交
    yolee599
        25
    yolee599  
       2023-11-08 08:55:23 +08:00 via Android
    这种情况直接 MR 不就行了?
    GBdG6clg2Jy17ua5
        26
    GBdG6clg2Jy17ua5  
       2023-11-08 08:57:55 +08:00
    @hxzhouh1 实际开发中确实是你这样操作的。
    mineqiqi
        27
    mineqiqi  
       2023-11-08 09:02:51 +08:00
    建议 cherry-pick ,squash commit
    dayeye2006199
        28
    dayeye2006199  
       2023-11-08 09:35:23 +08:00 via iPhone
    经常 rebase
    waterlaw
        29
    waterlaw  
       2023-11-08 14:29:01 +08:00 via Android
    feat2 拉出一个分支,merge develop, 再合并到 feat2
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     6036 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 02:33 PVG 10:33 LAX 19:33 JFK 22:33
    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