(解决了,看到问题体的底部)
寻找这个现在很长一段时间,我有什么到现在是:删除文件(历史)
- 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