git 有两个分支 a、a->b, a 有更新以后用什么语句更新到 b? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
git
Pro Git
Atlassian Git Tutorial
Pro Git 简体中文翻译
GitX
zioc
div>V2EX    git

git 有两个分支 a、a->b, a 有更新以后用什么语句更新到 b?

  •  
  •   zioc Sep 7, 2015 5908 views
    This topic created in 3897 days ago, the information mentioned may be changed or developed.

    a :当前线上版本,需要不断修复 bug
    b :来源于 a ,在 b 上面开发新模块

    两个分支都要保留,不能删除。

    在 a 上面更新代码以后,怎么也更新到 b ?

    27 replies    2015-09-07 23:18:30 +08:00
    markowitz73
        1
    markowitz73  
       Sep 7, 2015
    git checkout a & git pull & git checkout b & git rebase a
    orvice
        2
    orvice  
       Sep 7, 2015
    线上分支不应该直接在上面更新代码吧
    ifconfig
        3
    ifconfig  
       Sep 7, 2015
    看看 git flow 流程, A 分支有 bug 应该新开一个 /hotfix 分支,修改上线后合并到 B 的 feature 分支
    zioc
        4
    zioc  
    OP
       Sep 7, 2015
    @markowitz73 你是不是看错需求了?

    @orvice 啥意思?
    markowitz73
        5
    markowitz73  
       Sep 7, 2015 via Android
    @zioc 我觉得我写的满足了你的需求。
    malcolmyu
        6
    malcolmyu  
       Sep 7, 2015
    似乎只能使用 rebase 了
    cz208209
        7
    cz208209  
       Sep 7, 2015
    merge/rebase 有问题吗? 一楼的说的应该没问题吧
    ivyshark
        8
    ivyshark  
       Sep 7, 2015
    切到 b 然后 rebase a
    adrianzhang
        9
    adrianzhang  
       Sep 7, 2015
    这种开发模式是非常典型可以用 Git 最佳实践的。请参考: http://jiongks.name/blog/a-successful-git-branching-model/
    muteZephyr
        10
    muteZephyr  
       Sep 7, 2015
    一楼可行,不想切分支的话可以这么搞,效果相同: 在 b 上 git pull --rebase origin a
    otakustay
        11
    otakustay  
       Sep 7, 2015
    一种做法是走 rebase
    git checkout b
    git rebase a

    我觉得更好的做法是每一个 BUG 都从 a 拉出一个分支,这个分支开发完后同时 merge 到 a 和 b
    zioc
        12
    zioc  
    OP
       Sep 7, 2015
    @otakustay
    @markowitz73
    @ivyshark
    先谢谢回复

    rebase 或 merge 会删除分支吗? 我的需求是 a 、 b 分支都不能消失
    woshifyz
        13
    woshifyz  
       Sep 7, 2015
    cherry-pick 看是不是你想要的
    RoshanWu
        14
    RoshanWu  
       Sep 7, 2015
    如果不是“同步”分支,建议 cherry-pick
    otakustay
        15
    otakustay  
       Sep 7, 2015
    @zioc 不会,分支只有你手动才删得掉,其它任何操作都不会删除分支
    young
        16
    young  
       Sep 7, 2015
    难道 不是 git checkout a -> git merge b 吗?
    pyKun
        17
    pyKun  
       Sep 7, 2015
    cherry-pick
    cherry-pick
    cherry-pick
    hyq
        18
    hyq  
       Sep 7, 2015
    少量提交可以用 cherry-pick
    多一点的提交,看看能不能用 rebase
    TankyWoo
        19
    TankyWoo  
       Sep 7, 2015
    如果能 merge --ff-only, 也可以这样
    coolzilj
        20
    coolzilj  
       Sep 7, 2015   1
    建议楼主先熟悉一下 git 基础和 git-flow ,
    楼上说的 rebase/merge/cherry-pick 都可以,
    用哪种方法完全取决去个人爱好,
    洁癖用 rebase
    强迫症用 merge
    爱折腾用 cherry-pick
    NemoAlex
        21
    NemoAlex  
       Sep 7, 2015
    在 b 上 merge a 就可以了啊,没有什么必要 rebase 。
    cherry pick 会产生很多新的 commit ,更没有必要了。
    msg7086
        22
    msg7086  
       Sep 7, 2015
    @NemoAlex 用 b rebase a 就可以了啊,没有什么必要 merge 。
    nigelvon
        23
    nigelvon  
       Sep 7, 2015
    rebase 被玩坏了
    ShadowStar
        24
    ShadowStar  
       Sep 7, 2015
    建议用 merge

    rebase 可能会导致 non-fastforward
    cherry-pick 少量 commit 没问题,多了累
    cz208209
        25
    cz208209  
       Sep 7, 2015
    没有争议的问题 为啥还讨论这么激烈 蛋疼
    alexapollo
        26
    alexapollo  
       Sep 7, 2015
    git rebase -i <branch> 是正确的用法
    zongwan
        27
    zongwan  
       Sep 7, 2015
    On branch B

    1. branch_b clean
    git merge branch_a

    2. branch_b can not merge before commit
    git stash
    git merge branch_a
    * may need fix confilct then
    git stash pop

    遇到不可合并的二进制文件,需要重新 git checkout file
    About     Help     Advertise     Blog     API     FAQ     Solana     5394 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 141ms UTC 07:15 PVG 15:15 LAX 00:15 JFK 03:15
    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