V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
avalon8
V2EX  ›  问与答

Git 代码管理问题

  •  
  •   avalon8 · 2019-05-28 13:32:44 +08:00 · 1808 次点击
    这是一个创建于 2012 天前的主题,其中的信息可能已经有所发展或是发生改变。

    小弟公司这两天打算从 SVN 转到 GIT 让我想一个解决办法但是经理非要让我解决一个问题:

    1、因为经常开发过程中有的功能可能临近开发完成或者测试完成才决定上不上线所以最开始分支可能打的没有那么细,比如说一个需求先开发了 A 功能然后在 A 功能的基础上开发了 B 功能,并且这两个功能在一个分支上。

    2、上线的时候决定上 B 功能而不上 A 功能。

    3、所以经理想着是合并代码的时候只合并 B 功能的代码而不要 A 功能的代码

    请问 GIT 版本管理有什么好的办法能够做到合并每个版本的增量提交,cherry-pick 试了不行。 小弟万分感谢。

    21 条回复    2019-05-29 10:16:37 +08:00
    SoloCompany
        1
    SoloCompany  
       2019-05-28 14:07:19 +08:00 via iPhone
    git 不是万能的,vcs 代替不了模块设计划分,该有 coflict 还是会有 conflict

    如果不希望 conflict,应该让功能 b 使用独立分支,发布决定集成才合并
    imdong
        2
    imdong  
       2019-05-28 14:12:54 +08:00
    每次加新功能 顺手建一个分支
    习惯了就好,养不成习惯,谁也没辙。
    avalon8
        3
    avalon8  
    OP
       2019-05-28 14:14:40 +08:00
    @SoloCompany 确实是这样
    avalon8
        4
    avalon8  
    OP
       2019-05-28 14:14:56 +08:00
    @imdong 哈哈我也这么提过
    Vegetable
        5
    Vegetable  
       2019-05-28 14:19:24 +08:00
    这个应该叫插件式开发吧
    jybox
        6
    jybox  
       2019-05-28 14:37:42 +08:00
    新建一个分支 cherry-pick B 功能的 commit (为什么「 cherry-pick 试了不行」?)

    如果两个功能的代码有重叠那估计没有工具解决得了了。
    wutiantong
        7
    wutiantong  
       2019-05-28 14:45:57 +08:00
    git rebase?
    acehow
        8
    acehow  
       2019-05-28 14:46:57 +08:00 via Android
    gitflow 学一下
    momocraft
        9
    momocraft  
       2019-05-28 14:48:30 +08:00
    人都做不到的不要指望 git 了
    passerbytiny
        10
    passerbytiny  
       2019-05-28 14:58:40 +08:00   ❤️ 2
    你的第一句话我实在是看不懂。

    你描述的问题我也很怀疑是否存在,在 A 功能的基础上开发了 B 功能,最后只上线 B 功能而不上线 A 功能,这相当于建一个没有底层的高楼。

    解决方案是有的,与 git 无关,你再添加些 C 代码,在保留 B 功能的同时,把 A 功能隐藏掉,相当于造一个底层不开放的高楼。
    wobushizhangsan
        11
    wobushizhangsan  
       2019-05-28 15:03:16 +08:00 via Android
    哈哈。项目上的事情让 git 背锅。做不好需求和版本的管理,这个问题无解。
    baojiweicn2
        12
    baojiweicn2  
       2019-05-28 15:10:37 +08:00 via Android
    同问,为啥 cherry pick 不行
    avalon8
        13
    avalon8  
    OP
       2019-05-28 15:49:13 +08:00
    @jybox 就是这两个共能在一个分支上然后想只要后面开发功能的代码, 用 cherry-pick 会提示冲突,还是要手动合并
    avalon8
        14
    avalon8  
    OP
       2019-05-28 15:50:20 +08:00
    @wobushizhangsan 并不是让 git 背锅只是领导都比较保守,从 svn 迁移到 git 要满足领导的需求才有可能施行
    avalon8
        15
    avalon8  
    OP
       2019-05-28 15:52:24 +08:00
    @passerbytiny 这些功能可能并非关联很大或者连续的功能,只是想满足领导的需求才能有机会从 svn 迁移到 git 上,领导思想偏保守
    avalon8
        16
    avalon8  
    OP
       2019-05-28 15:52:40 +08:00
    @acehow 好的我去看一下 感谢提示
    avalon8
        17
    avalon8  
    OP
       2019-05-28 15:53:41 +08:00
    @baojiweicn2 想要的是合并某一次的增量提交,只要后一个版本的增量提交而不要前面某个版本的代码
    pkookp8
        18
    pkookp8  
       2019-05-28 16:11:11 +08:00 via Android
    功能 ab 独立开发,不然没辙,或者 merge b 分支的时候手动删除 a 的相关提交
    avalon8
        19
    avalon8  
    OP
       2019-05-28 16:26:44 +08:00
    @pkookp8 嗯只能这样了
    msg7086
        20
    msg7086  
       2019-05-29 06:34:53 +08:00
    B 如果依赖 A 的话,没了 A,B 当然需要手动处理更改,不管是用 SVN 还是 Git 还是现在还没发明出来的下一代版本管理工具,都需要手动解决的。
    avalon8
        21
    avalon8  
    OP
       2019-05-29 10:16:37 +08:00
    @msg7086 嗯嗯确实
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1238 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 23:55 · PVG 07:55 · LAX 15:55 · JFK 18:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.