在不删除旧分支的情况下进行变基
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
我在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