master 分支包含未开发完成的功能,线上版本出现严重 bug 需要修复,你们一般在 master 分支还是 prod 分支上创建 hotfix 分支?能详细说下为什么吗 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
git
Pro Git
Atlassian Git Tutorial
Pro Git 简体中文翻译
GitX
drymonfidelia
V2EX    git

master 分支包含未开发完成的功能,线上版本出现严重 bug 需要修复,你们一般在 master 分支还是 prod 分支上创建 hotfix 分支?能详细说下为什么吗

  •  
  •   drymonfidelia 2024-06-10 20:01:21 +08:00 2636 次点击
    这是一个创建于 537 天前的主题,其中的信息可能已经有所发展或是发生改变。
    16 条回复    2024-06-11 11:44:45 +08:00
    fov6363
        1
    fov6363  
       2024-06-10 20:12:42 +08:00
    基于 master 创建分支,提交验证,验证通过后,再 cherry-pick 到 prod 分支上,再次验证。两次验证通过后,就可以合并代码了。

    两次验证可以保证今天 hotfix 和下次发版都不会有问题
    yuanmomo
        2
    yuanmomo  
       2024-06-10 20:12:55 +08:00 via iPhone
    hotfix 的分之一定是从跟 prod 环境一致的分支拉出来的。
    106npo
        3
    106npo  
       2024-06-10 20:27:54 +08:00
    master 就不会有未完成的任务,只从 release 合并.hotfix 一般从 release 开始打,不急或者范围小的也可能从 feature 打
    9c04C5dO01Sw5DNL
        4
    9c04C5dO01Sw5DNL  
       2024-06-10 20:42:08 +08:00
    master 对 release 上要 hotfix 的部分没有改动的话,hotfix 在基于二者创建都可以,cherry pick 一下就行了。

    如果 master 对 release 上要 hotfix 部分已经发生改动了的花,老老实实在 release 上 hotfix 吧,完了还得在 master 上重新 hotfix
    renmu
        5
    renmu  
       2024-06-10 20:51:53 +08:00 via Android
    线上环境出问题当然从出问题的环境的分支进行修复
    MIUIOS
        6
    MIUIOS  
       2024-06-10 20:57:43 +08:00
    master 出现未完成的代码这本身就很不对劲了
    lovelylain
        7
    lovelylain  
       2024-06-10 21:27:08 +08:00 via Android
    你们把 master 当开发分支,另外弄了个 prod 当主干?
    drymonfidelia
        8
    drymonfidelia  
    OP
       2024-06-10 21:45:31 +08:00
    @lovelylain 对,我去过的几家公司都这么干
    kneo
        9
    kneo  
       2024-06-10 21:58:31 +08:00 via Android
    线上版本的 hotfix 肯定是基于线上版本的代码做分支,基于线上版本重现 bug ,基于线上版本验证 hotfix 。不可能基于 master 。

    master 当然可以有未完成的功能。其实就相当于 dev 分支。这个由项目自己决定,我不觉得是什么问题。
    yogogo
        10
    yogogo  
       2024-06-10 22:01:58 +08:00
    快跑
    7gugu
        11
    7gugu  
       2024-06-10 22:05:54 +08:00
    直接从 prod 上切一个 hotfix ,弄完再合回去。不过 master 上包含未完成的代码也太野鸡了,真的是乱搞。
    panlatent
        12
    panlatent  
       2024-06-10 22:18:16 +08:00 via Android   1
    看你遵循那哪个规范,hotfix 肯定是从最接近发布的分支来开。 拿 master 当开发/主干是可以的。但如果是开源项目且默认分支是 master ,包含未完成代码可能会对用户造成困扰。
    crackidz
        13
    crackidz  
       2024-06-11 08:27:00 +08:00
    cherry-pick 到 prod
    han3sui
        14
    han3sui  
       2024-06-11 08:48:24 +08:00
    基于 prod 拉 hotfix ,上线后,合并到 master ,重新测试
    yc8332
        15
    yc8332  
       2024-06-11 10:51:55 +08:00
    为啥没上线的功能会在 master 里面。。正常都是线上代码 master 。。看你们线上哪个分支,从那个分支弄个新分支,修复了合上就是了。
    zhenwang
        16
    zhenwang  
       2024-06-11 11:44:45 +08:00   1
    大家不要纠结 master 分支包含未完成代码,分支只是一个名,“master”、“dev”当开发分支不过就是名字,各家有各家自己的设定,只不过开源项目约定俗成的是 master/main 分支作为稳定主干。楼主的场景下,应该秉持哪里出问题,哪里拉分支处理。你如果是线上问题,你就该从 prod 分支(假设你们是这个分支作为线上,或者你们至少发布的时候有一个 tag 吧)拉一个 hotfix ,因为这才是和你线上绝对一致的代码环境。hotfix 完成以后,应该将你这个 hotfix 分支在你们的开发/测试/预发(假设有)/生产,这么走一遍,进行验证。hotfix 的首要目的是快速修复。
    上面的事情搞定后,你可以把 hotfix 里面的 commit ,再 cherry-pick 到你现在的开发环境等,部署一遍,这个过程就和普通开发流程一致。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2589 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 31ms UTC 08:19 PVG 16:19 LAX 00:19 JFK 03:19
    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