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

Rebase without removing old branch

我在Git有以下情况:

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

我想变基分支,但保留原来的分支。所以我想要这个:

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

原因是我重新建立基础的分支可能会破坏某些东西。如果它做的太多了,我不能轻易修复它,我想继续使用旧分支。

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

只需创建一个新分支并在其上工作。

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

并继续 to-be-rebased 直到你有可行的东西。

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


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

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

最后,为了 公平起见,我们确实可以 cherry-pick 达到同样的效果:

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