git elimina todos los files eliminados de todo el historial

Me preguntaba si alguien tiene una manera más eficiente y más inteligente de hacer esto. La construcción de bucle requiere que todos los files eliminados se eliminen de cada confirmación leyendo cada confirmación. Con muchos compromisos, esto lleva mucho time.

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 

Eso parece eliminar cada file de a uno por vez.
Considere que git rm puede tomar múltiples files para eliminar.

Entonces, una optimization sería build esa list y llamar a la twig de filter una vez.
Puede ver un ejemplo de ese enfoque en " Forma correcta de eliminar files no deseados con git filter-branch sin git rm failing ".