Nowe repo z skopiowaną historią tylko aktualnie śledzonych plików

Nasze obecne repo ma dziesiątki tysięcy zatwierdzeń, a nowy klon przekazuje prawie gigant danych (istnieje wiele plików jar, które zostały usunięte w historii). Chcielibyśmy zmniejszyć ten rozmiar, tworząc nowe repo, które przechowuje pełną historię tylko dla plików, które są aktualnie aktywne w repo, lub ewentualnie zmodyfikować bieżące repo, aby wyczyścić historię usuniętych plików. Ale nie jestem pewien, jak to zrobić w praktycznej rezydencji.

Próbowałem skryptu wUsuń usunięte pliki z historii git:

for del in `cat deleted.txt`
do
    git filter-branch --index-filter "git rm --cached --ignore-unmatch $del" --prune-empty -- --all
    # The following seems to be necessary every time
    # because otherwise git won't overwrite refs/original
    git reset --hard
    git for-each-ref --format="%(refname)" refs/original/ | xargs -n 1 git update-ref -d
    git reflog expire --expire=now --all
    git gc --aggressive --prune=now
done;

Ale biorąc pod uwagę, że w historii mamy dziesiątki tysięcy usuniętych plików i dziesiątki tysięcy zatwierdzeń, uruchomienie skryptu zajęłoby wieczność. Zacząłem uruchamiać to dla JEDNEGO usuniętego pliku 2 godziny temu, a polecenie filtrujące gałąź nadal działa, przechodzi każdy z ponad 40 000 zatwierdzeń pojedynczo, a to dotyczy nowego Macbooka Pro z napędem SSD.

Przeczytałem także stronęhttps://help.github.com/articles/remove-sensitive-data ale działa to tylko do usuwania pojedynczych plików.

Czy ktoś był w stanie to zrobić? Naprawdę chcę zachować historię obecnie śledzonych plików, nie jestem pewien, czy korzyść z oszczędności miejsca byłaby warta stworzenia nowego repo, jeśli nie możemy zachować historii.

questionAnswers(3)

yourAnswerToTheQuestion