2012-03-14 29 views
2

http://snipplr.com/view/11513/,我試圖刪除Git對象完全後的git重置

$ git reflog expire --expire=1.minute refs/heads/master 
$ git fsck --unreachable # now I see those tarball blobs! 
$ git prune # hasta la vista, baby 
$ git gC# cleanup and repack the repo 

,但它並沒有幫助,我仍然能夠通過哈希碼結賬。

+1

請注意,除非丟棄的提交需要大量的磁盤空間或存在安全風險,否則您可以忽略此操作,並最終自行處理。 – Cascabel 2012-03-14 06:35:56

回答

0

除此之外,您還需要過期HEAD的reflog才能使提交成爲取消引用。

+0

你能解釋一下如何過期HEAD的reflog嗎?是否:git reflog expire --expire -reachable = now – sanyo 2012-03-14 05:58:11

+0

這與'refs/heads/master'的命令是一樣的,除了使用'HEAD'。 – Amber 2012-03-14 06:43:23

3

您鏈接到沒有因爲git gc工作不修剪任何少於兩週默認的命令,所以你需要指定要刪除這一切:

git reflog expire --expire-unreachable=now 
git gc --prune=now 

的呼籲git prune是多餘的,因爲git gc無論如何都會調用它。致電git fsck僅用於顯示目的,無需運行。

請注意,這些命令將無法恢復任何其他無法訪問的提交,當然,reflog將被清除,使其任何良好的回滾功能對過去的歷史記錄都無法使用。

+0

混帳引用日誌--expire不可達=現在 致命的:無法識別的說法:--expire不可達=現在 正確的語法似乎是: 混帳引用日誌到期--expire不可達=現在 GC後,不幸的是我還能夠通過哈希碼結賬 – sanyo 2012-03-14 05:52:53

+0

是的,你說得對,我已經更新了。 git fsck --unreachable中顯示的提交哈希是否出現? – 2012-03-14 06:11:46

+0

確保你沒有參考該提交'git標籤 - 包含'和'git branch -a --contains ',然後重新包裝它們。 – 2012-03-14 07:30:40