2014-10-29 64 views
3

我想清理我的存儲庫並刪除一切無法訪問。git - 擺脫無法到達的提交

我做

git reflog expire --expire=now --all 
git fsck --full --unreachable 
git repack -A -d 
git gc --aggressive --prune=now 

但我仍然有一些提交是從我的理解可達但不混帳的

我有些犯,比方說,一個

git branch --all --contains A 
git tag --contains A 

任何回報

但是

git fsck --full --unreachable 

也不會返回任何內容,因此它不會將A視爲無法訪問。

我錯過了什麼?

回答

2

其實我找到了!

這就是refs/original/mybranch ref仍然保持我的提交可達性。

這些裁判期間git的過濾分支

git branch --all 

創建不包括它們。

我之所以沒有在開始時找到它們,是因爲它們在.git/refs/original文件夾中丟失。

我發現他們在.git/packed-refs文件中。我剛剛從該文件中刪除了那些分支,並再次清理了存儲庫。