假设我有一串本地的 Git 分支,就像这样:
master branch1 branch2
| | |
o----o----o----A----B----C----D
我将上游更改拉取到主分支:
branch1 branch2
| |
A----B----C----D
/
o----o----o----o
|
master
我现在将 branch1 进行变基,得到以下结果:
branch2
|
A----B----C----D
/
o----o----o----o----A'---B'
| |
master branch1
请注意,由于对branch1进行了变基(rebase),提交A和B已经被重写为A'和B'。
这是我的问题: 现在我想将branch2变基。 显然的语法是git rebase branch1 branch2
,但那绝对不起作用。 我想要的是仅在branch1上重新应用C和D,但它却试图调和A和A',并将它们视为冲突。
以下命令可行:
git rebase --onto branch1 branch2^^ branch2
假设我知道branch2比之前的branch1引用多了两个提交。
既然git rebase --onto
可以工作,是否有一条单行的git命令可以将branch2重新基于新的rebased branch1,并且我不必确切地知道branch2包含多少次提交? (我想要指定某个神奇的引用而不是branch2^^作为中间参数。)
还是我忽略了其他方法?
我最感兴趣的解决方案是适用于极端情况的解决方案,不仅仅是两个分支 - 假设我有更像是5个本地分支,它们都链接在一起,我想将它们全部合并重建基。
branch1
基于master
进行变基时,是否出现了冲突?通常情况下,git rebase branch1 branch2
会按预期工作,但在某些情况下可能不会,例如当你必须解决将branch1
基于master
进行变基时的冲突。 - janos