(gelöst, siehe unten im Fragetext)
Wenn ich schon lange danach suche, habe ich bis jetzt Folgendes:
- http://dound.com/2009/04/git-forever-remove-files-or-folders-from-history/ und
- http://progit.org/book/ch9-7.html
Ziemlich die gleiche Methode, aber beide belassen Objekte in Packdateien ... stecken geblieben.
Was ich versucht habe:
git filter-branch --index-filter 'git rm --cached --ignore-unmatch file_name'
rm -Rf .git/refs/original
rm -Rf .git/logs/
git gc
Ich habe immer noch Dateien im Paket, und so weiß ich es:
git verify-pack -v .git/objects/pack/pack-3f8c0...bb.idx | sort -k 3 -n | tail -3
Und das:
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
Das Gleiche...
Versucht git clone
Trick, es entfernte einige der Dateien (~ 3000 von ihnen), aber die größten Dateien sind noch da ...
Ich habe einige große Legacy-Dateien im Repository, ~ 200M, und ich möchte sie wirklich nicht dort haben ... Und ich möchte das Repository nicht auf 0 zurücksetzen :(
LÖSUNG: Dies ist der kürzeste Weg, um die Dateien loszuwerden:
- check .git / packed-refs - mein Problem war, dass ich dort eine
refs/remotes/origin/master
Zeile für ein Remote-Repository hatte, es löschen, sonst wird git diese Dateien nicht entfernen - (optional)
git verify-pack -v .git/objects/pack/#{pack-name}.idx | sort -k 3 -n | tail -5
- um nach den größten Dateien zu suchen - (optional)
git rev-list --objects --all | grep a0d770a97ff0fac0be1d777b32cc67fe69eb9a98
- um zu überprüfen, was diese Dateien sind git filter-branch --index-filter 'git rm --cached --ignore-unmatch file_names'
- um eine Datei aus allen Revisionen zu entfernenrm -rf .git/refs/original/
- um das Backup von git zu entfernengit reflog expire --all --expire='0 days'
- um alle losen Gegenstände zu verfallengit fsck --full --unreachable
- um zu überprüfen, ob lose Gegenstände vorhanden sindgit repack -A -d
- Umpackengit prune
- um diese Objekte endgültig zu entfernen