说我有一个分支branch-1
,它基于master
中的某个地方,另一个分支是branch-1a
,它基于branch-1
的最新提交。我想同时将branch-1
和branch-1a
调整为master的顶部。
做到这一点的最佳方法是什么?
我想从图形上去:
----o---o---o---o - master
\
o---o---o---o - branch-1a
`branch-1
到
----o---o---o---o - master
\
o---o---o---o - branch-1a
`branch-1
我知道我可以重新设置branch-1a
的基础,然后签出branch-1
并将其强制重置为正确的提交,但这很乏味,我希望可以有一个命令解决方案。 / p>
答案 0 :(得分:2)
我不知道有一个命令可以重新设置所有基准,但是您可以使用--fork-point
简化以后的重新基准:
git checkout branch-1
git rebase master
git checkout branch-1a
git rebase --fork-point branch-1
如果没有--fork-point
(或手动标识branch-1
所指向的提交),您将看到两个重复的提交:
----o---o---o---o - master
\
x---y---x'---y'---o---o - branch-1a
`branch-1
--fork-point
告诉Git使用reflog,这应该有助于它识别出那些提交对是“相同的”,并将它们排除在第二个基准库之外。
答案 1 :(得分:1)
您别无选择,一个一个地做下去:
将branch1
重置在master
之上:
git checkout branch1
git rebase master
在{strong> branch1-a
上方重新设置branch1
:
git checkout branch1-a
git rebase branch1
依此类推,如果您还有其他分支机构。
始终将它们重新排列在最接近的基础之上,并以此顺序
。