2012-12-18 16 views
7

Ich frage mich, ob jemand einen effizienteren, intelligenteren Weg hat, dies zu tun. Das Schleifenkonstrukt erfordert, dass alle gelöschten Dateien von jedem Commit gelöscht werden, indem jedes Commit gelesen wird. Bei vielen Commits dauert das lange.git lösche alle gelöschten Dateien aus dem gesamten Verlauf

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 

Antwort

3

Das scheint jede Dateien einzeln zu entfernen.
Beachten Sie, dass git rm mehrere Dateien entfernt werden können.

Also eine Optimierung wäre, diese Liste zu erstellen und den Filter-Zweig einmal aufzurufen.
Sie können ein Beispiel für diesen Ansatz in "Proper way to remove unwanted files with git filter-branch without git rm failing" sehen.

+1

Ich habe 'grep -v -x -f/tmp/files-in-repo.txt' zusammen mit' xargs --delimiter = \\ n -r git rm ... 'nützlich gefunden. –

Verwandte Themen