所有你需要做的就是告訴混帳從哪裏開始變基:你可以做到這一點
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