2013-04-08 149 views
4

我使用git-subtree添加了一個git倉庫。問題是我在硬件重新加入git-subtree之前做了一次硬重置。現在提交歷史記錄仍在存儲庫中,但與主服務器斷開連接。如何刪除已刪除的git子樹文件夾的歷史記錄?

任何想法如何刪除它?我試過git rm - 沒有運氣的緩存。

+0

如果您已經恢復到之前的子樹,一個簡單的'混帳gc'應該消滅這些提交。 – TheBuzzSaw 2013-04-08 22:24:59

+0

我試過'混帳gc'但提交仍然存在,當我做'git的日誌--all' – programmerdave 2013-04-09 19:56:22

回答

4

馬上刪除提交那些已經無法訪問,這將是你的子樹的提交,你可以使用下面的命令的情況下:

git reflog expire --all --expire-unreachable=0 
git repack -A -d 
git prune 

git gc不會立即收集可達提交,因爲這些(在缺省配置)需要先過期,然後才能與其他可到達的提交打包。這會在一段時間後自行發生,也可以使用上面的命令強制執行。

而且考慮到你的子樹的任何引用承諾將防止它們被收集,這包括設有分公司,標籤和引用日誌引用。確保你確實沒有懸掛對這些提交的引用。

這裏也是如何處置可達提交更詳細的問題:

Garbage collect commits in git

+1

這沒有奏效。當我執行'git log --all'時,我仍然可以看到提交。當我做'git log'時,提交不在那裏。任何其他想法? – programmerdave 2013-04-09 19:55:40

+0

我得到它的工作!你是對的,所取得的遠程標籤仍然在Git倉庫即使我刪除了遙控器。我刪除了所有的標籤,現在是乾淨的 – programmerdave 2013-04-09 21:57:07

相關問題