(解決了,看到問題體的底部)
尋找這個現在很長一段時間,我有什麼到現在是:刪除文件(歷史)
- http://dound.com/2009/04/git-forever-remove-files-or-folders-from-history/ 和
- http://progit.org/book/ch9-7.html
幾乎相同的方法,但他們都留在包文件中的對象...卡住了。
我的嘗試:
git filter-branch --index-filter 'git rm --cached --ignore-unmatch file_name'
rm -Rf .git/refs/original
rm -Rf .git/logs/
git gc
還有在包文件,這是我怎麼知道的:
git verify-pack -v .git/objects/pack/pack-3f8c0...bb.idx | sort -k 3 -n | tail -3
這:
git filter-branch --index-filter "git rm -rf --cached --ignore-unmatch file_name" HEAD
rm -rf .git/refs/original/ && git reflog expire --all && git gc --aggressive --prune
同...
試過git clone
訣竅,它刪除了一些文件(〜其中3000),但最大的文件仍然存在...
我有一些在存儲庫中的大型遺留文件,〜200M,我真的不希望他們在那裏......而且我不想庫重置爲0 :(
SOLUTION: 這是擺脫了文件的最短途徑:
- 檢查的.git /填充裁判 - 我的問題是,我有沒有
refs/remotes/origin/master
線對於遠程倉庫,刪除它,否則git將不會刪除這些文件 - (o ptional)
git verify-pack -v .git/objects/pack/#{pack-name}.idx | sort -k 3 -n | tail -5
- 檢查最大文件 - (可選)
git rev-list --objects --all | grep a0d770a97ff0fac0be1d777b32cc67fe69eb9a98
- 要檢查那些是什麼文件 git filter-branch --index-filter 'git rm --cached --ignore-unmatch file_names'
- 從所有版本rm -rf .git/refs/original/
刪除文件 - 刪除Git的備份git reflog expire --all --expire='0 days'
- 到期的所有鬆動物體git fsck --full --unreachable
- 檢查是否有任何鬆動的對象git repack -A -d
- 重新包裝git prune
- 終於去掉這些對象
Soooo,你的問題是......? – zneak 2010-01-29 19:31:05
可能的重複項:http://stackoverflow.com/questions/2100907/how-to-purge-a-huge-file-from-commits-history-in-git/2158271 http://stackoverflow.com/questions/872565/how-do-i-remove-sensitive-files-from-gits-history – 2010-01-29 20:58:14
zneak - 我的問題在標題中。 gbacon - 試過這些,這些文件仍然保留在包文件中... – Devenv 2010-01-29 22:52:16