我有一个分支 B
基于分支 master
,我想将 B
rebase 到分支 A
.
我的问题是分支 A
是基于 master
中比 B
更早的提交,所以当我尝试 rebase B
到 A
上,它带来了 master
的所有提交历史,因为 A
从中分离出来。
通常我会通过交互式 rebase 来解决这个问题并手动删除不需要的提交,但是在这种情况下,有太多的提交无法通过这种方式处理。我想要的是一个命令,它允许我删除分支 B
中的所有提交,它是 A
的最后一个共同祖先和 master
的提示.
即。从分支 B
* 099b4f7 (HEAD -> master) commit_6
| * a4b6a50 (B) some other commit
|/
* 80cfbbc commit_5
* 49c40c9 commit_4
* 2923714 commit_3
* f78ee3c commit_2
| * f6d3601 (A) some commit
|/
* df753e1 commit_1
最佳答案
这正是 rebase
的 --onto
选项适用于的情况:
git switch B
git rebase --onto A master
这会将 B
的提交写入 A
,从 B
和 master< 之间最近的共同提交的子项开始
.
关于git - 如何在没有交互式 rebase 的情况下删除两次提交之间的所有提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64928771/