git - 在不删除旧分支的情况下进行 rebase

标签 git rebase git-rebase

我在Git中有以下情况:

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

我想 rebase 分支,但保留原始分支。所以我想要这个:

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 仍然指向完全相同的提交,不受影响。


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

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

关于git - 在不删除旧分支的情况下进行 rebase ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55336399/

相关文章:

git - 是否可以使现有的 git 提交显示为 merge ?

git - 如果本地存在分支,我应该在 pull 之前执行 git fetch 吗?

git - 更改 Git/GitHub 存储库的作者姓名和电子邮件,保留所有提交的时间戳

git - 如何在 rebase 期间为所有提交运行测试

git - 如何自动检测 Git 提交或 rebase 是否包含类似 "<<<<< HEAD"的内容?

git - 如何使用 onto 命令对分支进行 git rebase?

Git 在本地克隆上 merge 远程 pull 请求

ios - 在用户之间共享 Xcode 库

git rebase --strategy=我们的用例澄清

git - 'git merge' 和 'git rebase' 有什么区别?