重新设置git分支以及它与目标分支之间的任何分支

时间:2019-04-11 12:48:42

标签: git

说我有一个分支branch-1,它基于master中的某个地方,另一个分支是branch-1a,它基于branch-1的最新提交。我想同时将branch-1branch-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>

2 个答案:

答案 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

依此类推,如果您还有其他分支机构。

始终将它们重新排列在最接近的基础之上,并以此顺序