首页 > 解决方案 > Git 从某些提交中变基

问题描述

初学者真的很难理解Git rebase。我总是得到奇怪的结果rebase。我发现我可以用它--onto来控制我应该变基到哪里,但是我怎样才能控制from边呢?

例如:

在此处输入图像描述

假设我现在在分支 2,数字代表提交完成的时间,红色是我的分支 2 提交,尚未在 master 中。如果我想让我的分支 2 变为下面,我应该使用什么命令?

1) 1 -> 2 -> 8 -> 3 -> 5 -> 6 -> 7

2) 1 -> 2 -> 8 -> 5 -> 6 -> 7

一开始,我以为这样不行,因为我的commit 3会消失,但是我从Git网站上读到了,这实际上是有效的。

在此处输入图像描述

3) 1 -> 2 -> 3 -> 5 -> 6 -> 8 -> 7

我可以这样做吗?基本上只在master之上重新提交7?

问这些的原因是因为 autorebase总是让我头疼,所以我宁愿能够指定,我想 rebase fromwhich commit ontowhich commit。我可以这样做吗?但是我找不到from参数。

标签: git

解决方案


第一种情况:

git checkout branch2
git rebase máster

第二种情况:

git rebase --onto master branch2~3 branch2 #rebase branch2 but skipping revision 3

第三种情况:

git checkout branch2~
git cherry-pick master #pick revision 8
git cherry-pick branch2 # pick revision 7
# if you like the result
git branch -f branch2
git checkout branch2

推荐阅读