2016-11-09 124 views
1

我意外地刪除了我的mercurial存儲庫中的變更集,並刪除了太多變更集。我知道它會刪除後代,但出於某種原因,我認爲它只會刪除該分支或分支上的後代,這是從分支後代開始的。相反,它刪除了剝離修訂後提交的每個分支的所有變更集。如何恢復已刪除的變更集

mercurial documentation狀態如下:

strip不是歷史重寫操作,因爲它不是一個歷史可以重寫公共變更

由於變更的某個地方使用操作,那我該如何恢復它們?

回答

2

水銀備份剝奪補丁的所有備份束(即:條,修改等)一個名爲「帶備份」你的資料庫中的文件夾內。該目錄位於<repository-root>/.hg/strip-backup

在此文件夾,你會看到所有的變化備份,但他們將有哈希作爲名稱格式#hash#[ - 修正] -backup.hg。按照時間順序對其進行排序可以幫助您找到正確的一個,假設您知道何時執行錯誤的剝離操作。如果你不這樣做,你應該以相反的時間順序恢復所有的包,直到恢復正確的變更集。

執行恢復操作的命令是:

hg unbundle <path-to-bundle-file> 
hg update