将一系列分支重新定位为并行分支

时间:2017-10-16 03:04:41

标签: git git-branch rebase

我经常最终得到一系列的分支,就像这样:

...-(M)
     |
     +-A
       |
       +-B
         |
         +-C

通常对A,B和C中的每一个都有拉取请求。

问题在于,如果我从C请求拉请求,它包括分支A和B中所做的所有更改,这只会让人感到烦恼。

我想重新构建图形,使其看起来像:

...-(M)
     |
     +-A
     |
     +-B
     |
     +-C

但每次我试图改变B' B'或者' C'到'(M)'结构保持不变。

重组这个的正确方法是什么?

顺便说一句,我使用SourceTree来满足我所有与Git相关的需求,但我很乐意在必要时从控制台指令进行翻译。

编辑:VonC建议的解决方案确实有效,但是当我使用SourceTree的内置版Git时,它对我不起作用。从这里下载便携版本后:https://github.com/git-for-windows/git/releases/tag/v2.14.2.windows.3它工作正常。

1 个答案:

答案 0 :(得分:1)

任何不涉及 all 之前提交的任何rebase都是rebase --onto命令。

git checkout C
git rebase --onto M B C

这意味着:将 B(B除外)之后的所有重新绑定到C(包括C)到M上。

git checkout B
git rebase --onto M A B

注意:为此,最好使用latest Git for Windowsgit bash(例如PortableGit-2.14.2.3-64-bit.7z.exe解压缩到任意位置)。这将避免像#34这样的奇怪错误;当前分支没有跟踪信息。请指定您要反对的分支。"那I mentionned here
rebase是本地操作,不应该关注远程分支。