从特定提交开始的Git rebase

3
对于初学者来说,理解Git rebase真的很困难。每当我进行rebase时,总是会得到奇怪的结果。我发现可以使用--onto来控制我应该rebase到哪里,但我如何控制from这一侧呢?
例如:

enter image description here

假设我现在处于分支2,在这里数字代表提交时的时间,红色表示尚未合并到主分支的分支2提交。如果我想让我的分支2变成以下状态,应该使用什么命令?
1)1-> 2-> 8-> 3-> 5-> 6-> 7
2)1-> 2-> 8-> 5-> 6-> 7
一开始,我认为这是不可能的,因为我的第三个提交将会消失,但我从Git网站上了解到,这实际上是有效的。

enter image description here

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

我可以这么做吗?基本上只想将提交7放在主分支的顶部进行变基(rebase)?

我之所以问这些问题是因为,自动变基总是让我头疼,所以我宁愿能够指定要从哪个提交开始变基,变基到哪个提交。我能这样做吗?但我找不到“from”参数。


最好将分支标签放在正确的位置。分支指向一个提交。 - evolutionxbox
@evolutionxbox 你好,我有一点不太明白,能否进一步解释一下? - Sam YC
如果您查看git文档中的图表,您可以看到分支名称指向提交。例如,master指向C6 - evolutionxbox
1个回答

2

第一个案例:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接