首先,製作一個git工作文件夾的壓縮包。這使得它可以多次嘗試。
讓我們假設以下發生
- git的結帳另一個大的分支
- git的重訂主
- 一些問題(你跳過)
在這一點上,你現在仍然在另一個老分支和你reflog告訴你:
6f8348f [email protected]{0}: rebase: <commit message of last commit in another-old-branch>
e547ec0 [email protected]{1}: checkout: moving from another-old-branch to e547ec0d2a558d189464fc57192066b34ec5f28f^0
65cedf8 [email protected]{2}: checkout: moving from master to another-old-branch
想象一下,分支就像符號鏈接(或指針),我們所要做的就是讓分支的「另一箇舊分支」指向舊的commit-id。舊的提交仍然存在,並且它沒有被你的rebase所觸及。有點兒:「哎git的,另一種歷史的分支是e547ec0d2,忘記一切所發生」
在我們這裏的情況下,這是e547ec0d2a558d189464fc57192066b34ec5f28f,所以我們現在要做的是
- git的結帳另一人老枝#如果你是不是已經有
- 現在的git的復位 - 硬e547ec0d2a558d189464fc57192066b34ec5f28f
您的分支恢復正常。你可以重試你的rebase。
請注意,您的reflog現在比上面的示例稍微複雜一些。但應該STIL LBE有沒有什麼地方...
好運!
不,我一定是搞砸別的東西了,同時嘗試恢復。下次標註爲答案... – Benjol 2010-03-15 06:00:51
+1;另一個提示:'git log -g'可以是瀏覽reflog的更好方式。 – 2010-12-15 15:27:10
工作就像一個魅力!剛剛救了我的早上,謝謝你 – kmanzana 2016-01-05 11:51:08