首页 > 解决方案 > 在不删除旧分支的情况下重新设置基准

问题描述

我在Git中有以下情况:

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

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

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

原因是我的 rebased 分支可能会破坏事情。如果它做得太多,而且我不能轻易修复它,我想继续使用旧分支。

这是在主分支实际上基于另一个存储库并且比原始存储库落后很远的情况下。我正在尝试将我们的(HI)分支恢复到原始主分支的最新版本。

标签: gitrebasegit-rebase

解决方案


只需创建一个新分支并对其进行处理。

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 的评论,我们确实可以继续进行cherry-pick相同的效果:

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

推荐阅读