假设我有一系列本地git分支,如下所示:
master branch1 branch2
| | |
o----o----o----A----B----C----D
Run Code Online (Sandbox Code Playgroud)
我将上游更改引入主分支:
branch1 branch2
| |
A----B----C----D
/
o----o----o----o
|
master
Run Code Online (Sandbox Code Playgroud)
现在我改变branch1,给我这个:
branch2
|
A----B----C----D
/
o----o----o----o----A'---B'
| |
master branch1
Run Code Online (Sandbox Code Playgroud)
请注意,由于rebase branch1,提交A和B已被重写为A'和B'.
这是我的问题:现在我想要rebase branch2.明显的语法是git rebase branch1 branch2,但这绝对不起作用.我想要它做的只是在branch1之上重新应用C和D,而是尝试协调A和A'并且它认为它们是冲突的.
这确实有效:
git rebase --onto branch1 branch2^^ branch2
Run Code Online (Sandbox Code Playgroud)
这假设我知道branch2正好超过前一个branch1 ref的2次提交.
既然git rebase --onto有效,是否有一个1行的git命令会在一个新重定位的branch1之上重新绑定branch2,这样我就不必知道究竟有多少提交是branch2的一部分?(我想为中间参数指定一些魔术引用而不是branch2 ^^.)
还是有其他方法我忽略了?
我最感兴趣的是一个可以很好地扩展到极端情况的解决方案,而不仅仅是两个分支 - 假设我有更多的东西,比如5个本地分支,彼此链接在一起,我想将所有这些分开.