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 · 5064 次点击
    这是一个创建于 3357 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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 了
    laucie
        7
    laucie  
       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 。
    cherry pick 会产生很多新的 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 没问题,多了累
    laucie
        25
    laucie  
       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   ·   实用小工具   ·   3522 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 10:34 · PVG 18:34 · LAX 02:34 · JFK 05:34
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.