¿Hay alguna manera de eliminar todos los files ignorados de un repository git?

Ayer pasé varias horas solucionando un problema con mi repository de git que no fue corregido por git reset HEAD --hard porque los files que causan el problema fueron ignorados por .gitignore . ¿Hay alguna manera de "limpiar" o "limpiar" un repository git de todos los files que se ignoran, de modo que solo estén presentes los files rastreados por git?

Finalmente arreglé mi problema al eliminar el repository y clonarlo de github nuevamente, pero en el futuro, me gustaría eliminar inmediatamente todos los files potencialmente problemáticos (los que están siendo ignorados).

 git clean -dfX 

git-clean – Elimina files sin seguimiento del tree de trabajo
-d para eliminar directorys
-f eliminar con fuerza
-n realidad, no elimine nada, solo muestre lo que se haría.
-X Eliminar solo los files ignorados por Git. Esto puede ser útil para rebuild todo desde cero, pero mantener files creados manualmente.

Hay una sola solución de command:

 git ls-files --ignonetworking --exclude-standard | sed 's/.*/"&"/' | xargs git rm -r --cached 

Lo que hace es:

  • Listar todos los files ignorados
  • Manejar paths con espacios para evitar fallas
  • Llame git rm -r –cached para eliminar todos los files ignorados del índice (sin eliminarlos de su máquina local)