2012-12-18 18 views
7

Zastanawiam się, czy ktokolwiek ma bardziej wydajny i inteligentny sposób na zrobienie tego. Konstrukcja pętli wymaga usunięcia wszystkich usuniętych plików z każdego zatwierdzenia przez przeczytanie każdego zatwierdzenia. Z wieloma zobowiązaniami zajmuje to dużo czasu.git usuń wszystkie usunięte pliki z całej historii

git log --pretty=format: --name-status | grep -i ^D | cut -f2- | sort -u | xargs -I {} git filter-branch -f --index-filter 'git rm --cached --ignore-unmatch {}' HEAD 

Odpowiedz

3

To zdaje się usuwać poszczególne pliki po jednym na raz.
Należy pamiętać, że git rm może usunąć wiele plików.

Tak więc jedną optymalizacją byłoby zbudowanie tej listy i wywołanie gałęzi filtra jeden raz.
Możesz zobaczyć jeden przykład tego podejścia w "Proper way to remove unwanted files with git filter-branch without git rm failing".

+1

Znalazłem użyteczne 'grep -v -x-f/tmp/files-in-repo.txt' wraz z' xargs --delimiter = \\ n -r git rm ... '. –

Powiązane problemy