git 有两个分支 a、a->b, a 有更新以后用什么语句更新到 b? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
git
Pro Git
Atlassian Git Tutorial
Pro Git 简体中文翻译
GitX
zioc
V2EX    git

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

  •  
  •   zioc 2015-09-07 11:28:50 +08:00 5607 次点击
    这是一个创建于 3743 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

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

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

    rebase 可能会导致 non-fastforward
    cherry-pick 少量 commit 没问题,多了累
    cz208209
        25
    cz208209  
       2015-09-07 14:03:21 +08:00
    没有争议的问题 为啥还讨论这么激烈 蛋疼
    alexapollo
        26
    alexapollo  
       2015-09-07 14:18:26 +08:00
    git rebase -i <branch> 是正确的用法
    zongwan
        27
    zongwan  
       2015-09-07 23:18:30 +08:00
    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
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     936 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 23:09 PVG 07:09 LAX 15:09 JFK 18:09
    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