所有你需要做的就是告诉混帐从哪里开始变基:你可以做到这一点
git rebase --onto master SOMESHA foo
哪里SOMESHA是老主人SHA。也就是说,如果你的树现在看起来是这样
* aaaaaa - (master)
| * bbbbbb - (foo)
| * cccccc - (old master)
|/
* ffffff
你做
git rebase --onto master cccccc foo
你的树会那么这个样子。
* dddddd - (foo)
|
* aaaaaa - (master)
|
* ffffff
旁白:,我们可以使用的cccccc
不同的名称,如果你不喜欢使用SHA值提交。
> git reflog master
aaaaaa [email protected]{0}: reset: moving to something
cccccc [email protected]{1}: commit: change the froozle
ffffff [email protected]{2}: commit: snarf the froozle
这意味着我们可以参考cccccc
为[email protected]{1}
(AKA,主站的先前位置)
因此,我们可以写提交cccccc
是foo^
这个复位为
git rebase --onto master [email protected]{1} foo
的另一描述(也就是foo的parernt),所以我们也可以这样写:
git rebase --onto master foo^ foo
他们都做同样的事情,你可能更喜欢在不同的情况下使用不同的。我通常会发现SHA很容易使用,因为在执行此类操作之前,我经常会拉起我的存储库的图形。
谢谢,这个作品 – Aaron 2012-08-08 15:44:24
而不是提交SHA你也可以使用'master @ {1}'。 – chbaker0 2017-07-25 20:28:48
@ chbaker0你绝对正确 - 我最初以为你是在暗示一些不同的东西。我将这个建议添加到解释的答案中。 – 2017-07-26 02:34:47