我经常最终得到一系列的分支,就像这样:
...-(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它工作正常。
答案 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 Windows的git bash
(例如PortableGit-2.14.2.3-64-bit.7z.exe
解压缩到任意位置)。这将避免像#34这样的奇怪错误;当前分支没有跟踪信息。请指定您要反对的分支。"那I mentionned here。
rebase
是本地操作,不应该关注远程分支。