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

功能 A 完成,但未上线。开始搞功能 B,但同时 B 里又需要 A 里的一部分代码

  •  
  •   hO0O0 · 2022-12-20 11:42:54 +08:00 · 3540 次点击
    这是一个创建于 704 天前的主题,其中的信息可能已经有所发展或是发生改变。

    各位遇到这种情况时,一般是从主分支上切一个新的,还是就在 A 的基础上切一个分支来搞?

    16 条回复    2022-12-22 10:52:57 +08:00
    shenyu1996
        1
    shenyu1996  
       2022-12-20 11:47:17 +08:00
    后者吧,但是要同步 rebase A 的后续更新
    Rache1
        2
    Rache1  
       2022-12-20 11:58:37 +08:00
    A 未完成,就要考虑 A 已经修改过的部分对现有的业务是否会有影响, 如果没影响,那你自然可以基于 A 分支创建 B 。

    但是如果有影响,那如果你的 commit 足够细,cherry-pick 或许可以

    不过,如果需要的那部分代码不是很多的话,C/V 也何尝不可。
    XiLingHost
        3
    XiLingHost  
       2022-12-20 12:00:04 +08:00
    先做 mock 吧,这是功能模块切分的不够好
    renmu
        4
    renmu  
       2022-12-20 12:01:07 +08:00 via Android
    主分支切,然后复制黏贴
    renmu
        5
    renmu  
       2022-12-20 12:02:14 +08:00 via Android
    因为你并不能确认功能 a 会比功能 b 先发
    msg7086
        6
    msg7086  
       2022-12-20 12:03:22 +08:00
    把提交拆开,在含有 A 的提交之后分叉再继续开发。

    另外也可以用开关把 A 功能的其他部分先禁用掉,然后局部打开 feature flag 测试再在生产上启用。
    xuyang2
        7
    xuyang2  
       2022-12-20 12:46:53 +08:00
    把 A 里的这一部分代码 单独拆个 PR 合了
    agmtopy
        8
    agmtopy  
       2022-12-20 13:08:24 +08:00
    切主分支吧,保险起见,上线了未经测试的代码,锅是自己的
    xzysaber
        9
    xzysaber  
       2022-12-20 13:28:00 +08:00
    所以需要多提交,不要写一大堆再提交。cherry-pick 是一种选择。
    ChefIsAwesome
        10
    ChefIsAwesome  
       2022-12-20 14:34:37 +08:00
    把 a 重构,拆成模块。
    kaedeair
        11
    kaedeair  
       2022-12-20 16:24:03 +08:00
    主分支切新的,然后从 A 的提交 cherry-pick 需要的进来
    brader
        12
    brader  
       2022-12-20 16:47:00 +08:00
    你有信心 A 功能会先于 B 功能上线,就直接从 A 切分支,不然你会头大,产品和你说 B 功能先上的话,你会发现 B 里面掺杂了 A 的代码,出问题怎么办。。。
    NathanDo
        13
    NathanDo  
       2022-12-20 17:19:57 +08:00
    给 A 功能加个开关
    xiaojie668329
        14
    xiaojie668329  
       2022-12-21 12:15:34 +08:00 via iPhone
    先确定哪个先上线。
    lazyfighter
        15
    lazyfighter  
       2022-12-22 09:42:55 +08:00
    cherry-pick
    unco020511
        16
    unco020511  
       2022-12-22 10:52:57 +08:00
    得看是否已经测试通过(上没上线不是关键),如果 A 已经测试通过,那就说明 A 已经稳定了,当然可以 rebase.
    反之,就只能将公用部分先 pick 过来用
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1659 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 16:52 · PVG 00:52 · LAX 08:52 · JFK 11:52
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.