在不删除旧分支的情况下进行变基

时间:2019-03-25 11:05:46

标签: git rebase git-rebase

我在Git中遇到以下情况:

A--B--C--D--E--F--G
       \--H--I

我想重新建立分支,但保留原始分支。所以我想要这个:

A--B--C--D--E--F--G
       \--H--I     \--H'--I'

原因是我的重新建立基础的分支可能会破坏事情。如果它做得太多,而我又不能轻易修复它,那么我想继续使用旧分支。

在这种情况下,master分支实际上基于另一个存储库,并且距离原始存储库还有很长的路要走。我正在尝试将(H-I)分支恢复到原始master分支的最新版本。

1 个答案:

答案 0 :(得分:6)

只需在其上创建一个新分支即可。

git checkout your-old-branch
git checkout -b to-be-rebased
git rebase master

并在to-be-rebased上进行操作,直到您可以使用为止。

所以your-old-branch仍指向相同的完全提交,不受影响。


...,并且可以将前两个结帐步骤合并为一个(如Johnathon所指出的),以避免不必要的结帐步骤:

git checkout -b to-be-rebased your-old-branch

最后,为了公平起见,对Lasse's comment而言,我们可以继续进行cherry-pick来达到相同的效果:

git checkout -b new-branch master
git cherry-pick master..your-old-branch