调整基线一个系列分支为平行分行
问题描述:
我经常与一个系列分支最终建成一个从另一个这样的:调整基线一个系列分支为平行分行
...-(M)
|
+-A
|
+-B
|
+-C
为每个A,B和C.
的拉请求
一般
问题是,如果我向C请求一个Pull请求,它将包含在分支A和B中所做的所有更改,这些更改只会激怒人们。
我想重新构造图,使得它看起来像:
...-(M)
|
+-A
|
+-B
|
+-C
但每次我试图变基或者“B”或“C”到“(M)”的结构保持一样。
什么是重构这个的正确方法?
顺便说一下,我使用SourceTree来处理所有与Git相关的需求,但如果需要,我很乐意从控制台指令进行翻译。
编辑:VonC建议的解决方案确实有效,但当我使用SourceTree的Git内置版本时,它不适用于我。从这里下载便携版本后:https://github.com/git-for-windows/git/releases/tag/v2.14.2.windows.3它工作正常。
答
不涉及所有以前的提交是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
注:对于时,最好使用的git bash
latest Git for Windows(如PortableGit-2.14.2.3-64-bit.7z.exe
解压到任何你想要的地方)。这样可以避免像“当前分支没有跟踪信息,请指定你想要分支的分支”这样的怪异错误。那I mentionned here。
A rebase
是本地操作,不应该关注远程分支。
谢谢你VonC。我一直在尝试非常类似于以下这篇文章:https://makandracards.com/makandra/10173-git-how-to-rebase-your-feature-branch-from-one-branch-to-other 但是,链接的示例(带有2个参数)和示例(带有3个参数)都会给出错误消息:“当前分支没有跟踪信息,请指定要对其分支的分支。”我正在努力理解这意味着什么。 – Slartibartfast
@Slartibartfast奇怪的是,这应该涉及本地分支:不需要远程跟踪分支。但是,如果你必须:https://*.com/a/32729663/6309 – VonC
@Slartibartfast顺便说一句,你使用哪个Git版本,在哪个操作系统上? Git分支-v显示A,B和C吗? – VonC