我用命令git checkout 1234567
來查看舊提交。 直接後來我檢查了另一個提交git checkout 1234568
然後我再次檢查主人git checkout master
。但現在我的網站是舊版本。命令git checkout刪除了一些提交
我執行git log --oneline
後,我意識到我的兩個最新的提交已經丟失了!爲什麼會發生這種情況,是否有可能恢復它們?
這是因爲我必須在每次結賬前再次掌握結賬以完成另一次提交?
我用命令git checkout 1234567
來查看舊提交。 直接後來我檢查了另一個提交git checkout 1234568
然後我再次檢查主人git checkout master
。但現在我的網站是舊版本。命令git checkout刪除了一些提交
我執行git log --oneline
後,我意識到我的兩個最新的提交已經丟失了!爲什麼會發生這種情況,是否有可能恢復它們?
這是因爲我必須在每次結賬前再次掌握結賬以完成另一次提交?
在Git中,nothing is lost只要你承諾。
可以使用reflog說得到提交的雜誌是master
已通過時間指向:
git reflog master
一旦你所在的你丟失的最新的一個承諾在reflog中,通過使用git reset
可以使master
再次指向它。
例如,假設最近丟失的提交位於reflog中的第4條條目處。爲了在恢復它master
你會說:
git checkout master
git reset --hard [email protected]{4}
其中[email protected]{4}
指觸犯該master
從它現在是指向4項前。
,注意清除master
之前,你應該確保你的工作目錄是乾淨,那是你沒有任何未提交變化。
好啦,幾乎什麼。如果足夠的時間過去了,無法訪問的提交將會被刪除,最終將被刪除。默認情況下,它們將保持30天左右,但您可以通過gc.reflogExpireUnreachable
選項更改該限制。
您是否在'master'上進行了這兩個提交,或者您檢出了其他提交之一? –
如果您嘗試再次結帳,會發生什麼情況?你失去了他們的哈希? – maazza
檢查git reflog查看你實際簽出的提交內容 – Martin