avalon8
V2EX  ›  问与答

Git 代码管理问题

  •  
  •   avalon8 · May 28, 2019 · 2418 views
    This topic created in 2721 days ago, the information mentioned may be changed or developed.

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

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

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

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

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

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

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

    如果两个功能的代码有重叠那估计没有工具解决得了了。
    wutiantong
    wutiantong
    May 28, 2019
    7
    git rebase?
    acehow
    acehow
    May 28, 2019 via Android
    8
    gitflow 学一下
    momocraft
    momocraft
    May 28, 2019
    9
    人都做不到的不要指望 git 了
    passerbytiny
    passerbytiny
    May 28, 2019❤️2
    10
    你的第一句话我实在是看不懂。

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

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