(решено, см. нижнюю часть тела вопроса)
Я давно ищу это, и до сих пор у меня есть:
- 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 :(
РЕШЕНИЕ: Это самый короткий способ избавиться от файлов:
- проверьте .git / pack-refs - моя проблема заключалась в том, что у меня была строка
refs/remotes/origin/master
для удаленного репозитория, удалите ее, иначе git не удалит эти файлы - (необязательно)
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/
- удалить резервную копию gitgit reflog expire --all --expire='0 days'
- погасить все незакрепленные предметыgit fsck --full --unreachable
- проверить, нет ли незакрепленных предметовgit repack -A -d
- переупаковкаgit prune
- чтобы окончательно удалить эти объекты
git gc --aggressive --prune
Не получилось, перепаковал все, а файл все еще там ... - person Boris Churzin   schedule 30.01.2010git fsck --full --unreachable
? - person Dan Moulding   schedule 01.02.2010for i in `git verify-pack -v .git/objects/pack/#{pack-name}.idx | sort -k 3 -n | tail -5` ; do git rev-list --objects --all | grep $(echo $i | sed 's/ .*//g') ; done
- person geermc4   schedule 08.01.2013