V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
git
Pro Git
Atlassian Git Tutorial
Pro Git 简体中文翻译
GitX
Zeahoo
V2EX  ›  git

在 master 上开了一个分支,但是最后却要合并到 develop 上, 这个分支有 5 个提交,用什么命令比较好

  •  
  •   Zeahoo · 2016-08-17 16:40:28 +08:00 · 9223 次点击
    这是一个创建于 3004 天前的主题,其中的信息可能已经有所发展或是发生改变。

    大家帮帮忙, 我现在是准备用 cherry-pick 来提交,但是老是会报错,有没有什么其他的好办法

    19 条回复    2016-08-18 17:01:12 +08:00
    chenghuang
        1
    chenghuang  
       2016-08-17 16:43:03 +08:00
    git merge origin/master
    git merge origin/develop
    git cm
    git push
    merge request
    julyclyde
        2
    julyclyde  
       2016-08-17 16:44:46 +08:00
    似乎取决于你的 develop 和 master 啥关系啊
    Zeahoo
        3
    Zeahoo  
    OP
       2016-08-17 16:48:08 +08:00
    @julyclyde develop 是不稳定的版本,是基于 master 切出来的分支。
    julyclyde
        4
    julyclyde  
       2016-08-17 16:49:43 +08:00
    @Zeahoo merge-base develop master 是不是比 merge-base 新分支 master 要更早些?
    Zeahoo
        5
    Zeahoo  
    OP
       2016-08-17 16:54:46 +08:00
    @julyclyde 添加功能的时候都是先把功能 merge 到 develop 上再从 develop merge 到 master 上的,只不过我这次弄错了,从 master 切出分支
    wenbinwu
        6
    wenbinwu  
       2016-08-17 17:00:09 +08:00
    直接 merge develop 不就行了么?
    9hills
        7
    9hills  
       2016-08-17 17:01:16 +08:00
    用 merge 的都是误人子弟哈,等着你的 history 一团乱吧

    git checkout to_merge_branch
    git checkout -b tmp_branch (复制临时分支,避免新手搞晕了头)
    git rebase develop (以 develop 为基准 rebase ,此时可能要处理冲突)
    git checkout develop
    git merge tmp_branch
    wangxn
        8
    wangxn  
       2016-08-17 17:04:30 +08:00 via Android
    git rebase
    cjyang1128
        9
    cjyang1128  
       2016-08-17 17:24:21 +08:00   ❤️ 1
    rebase -i && pick squash
    cherry-pick
    vwhenx
        10
    vwhenx  
       2016-08-17 17:28:13 +08:00
    按理说 master 分支是应该可以随时合并到其他分支的才对
    kisnows
        11
    kisnows  
       2016-08-17 17:52:00 +08:00
    rebase 冲突太多了,需要一次次的去解决。还是 merge 来的快一点
    Sharuru
        12
    Sharuru  
       2016-08-17 18:00:44 +08:00
    = = 一般自己的个人 dev 分支才会在 push 之前用用 rebase ,通常特性都是 merge 的。
    merge 的时候 squash 成一条 commit 信息就好,不然 history 太美。
    julyclyde
        13
    julyclyde  
       2016-08-17 20:18:58 +08:00
    cherry-pick 按说应该可以啊
    zhang6464
        14
    zhang6464  
       2016-08-17 20:30:47 +08:00
    @cjyang1128 正解, rebase 要带上基线,你的最早的 commit , cherry-pick 也可以把所有代码提出来,然后 stash save 一下, checkout 到 develop 再 pop
    zhang6464
        15
    zhang6464  
       2016-08-17 20:31:48 +08:00
    merge 需要你手动把不是你修改的代码剔除掉。。如果 diff 不是太多的话,也可以考虑 merge
    wweir
        16
    wweir  
       2016-08-18 10:04:21 +08:00
    @cjyang1128 个人感觉这样可能更好:
    rebase -i $(master && develop same base)
    rebase
    baikaishui77
        17
    baikaishui77  
       2016-08-18 12:23:50 +08:00
    @kisnows 才五个 commit 而且 commit 如果更多 可以先 rebase -i 合并 commit 再分支 rebase
    baikaishui77
        18
    baikaishui77  
       2016-08-18 12:35:45 +08:00
    cherry-pick 实际上效果和 rebase 一致
    zenliver
        19
    zenliver  
       2016-08-18 17:01:12 +08:00
    分别合并到 master 和 develop ~~~
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3563 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 10:37 · PVG 18:37 · LAX 02:37 · JFK 05:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.