Git enumera files inexistentes sin seguimiento lentamente

Estoy usando git para el control de fuente en un repository. Recientemente, ha comenzado a advertirme sobre el time que lleva enumerar los files sin seguimiento cuando se usa el git status :

 $ git status On branch my_branch Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git checkout -- <file>..." to discard changes in working directory) modified: My_Project/my_source.c It took 3.24 seconds to enumerate untracked files. 'status -uno' may speed it up, but you have to be careful not to forget to add new files yourself (see 'git help status'). no changes added to commit (use "git add" and/or "git commit -a") 

Sin embargo, no hay files sin seguimiento en este repository, lo comprobé con el git status -uall . Alguna otra información posiblemente relevante:

  • Noté que esta advertencia solo aparece cuando el git status realmente toma unos segundos para ejecutarse.
  • Mi repository es de 130.6 MB en este momento.
  • Mis productos de construcción están fuera de tree.

¿Por qué git tarda tanto en enumerar files sin seguimiento que no existen?


Aquí hay algunas otras preguntas relevantes:

  • forms de mejorar el performance del estado de git
  • El estado de Git toma mucho time para completarse

Solo por aclarar la solución dada por el autor en el último comentario:

He reemplazado mi disco y no he encontrado este problema.

El problema no estaba en Git, sino que el problema estaba en el hardware de la computadora.
Una vez que se reemplazó la HD, se resolvió el problema.

Primero, quiero agradecer los comentarios de Sven Marnach que básicamente me dieron esta solución.

Problema: También tuve este problema, pero mi HD (s) está / está bien. Se necesitan entre 3 y 5 segundos para realizar un "estado de git" en un disco SSD y de 4 a 8 segundos en un disco magnético. Es mucho más rápido después de haberlo hecho varias veces. También veo este error en tomar tanto time para enumerar los files sin seguimiento pero no tengo cambios para confirmar.

Solución rápida: elimine los files que estén ocultos por sus files .gitignore.

Mejor solución: deje de build en el mismo directory que está en control de fuente.

Por qué: Git todavía tiene que revisar todos los files no rastreados, ver si hay alguno nuevo y luego hacer una reference cruzada con las inputs en .gitignore. Este error no indica que tenga files que deben registrarse, sino que se está tomando realmente mucho time en estos días para averiguar si hay un file que debe registrarse.

En un process de pago limpio donde no hay files que Git ignore y una unidad SSD, ejecutar "estado de git" toma 0,8 segundos.

Una última nota: este es un proyecto realmente antiguo y tenemos un file .gitignore realmente grande. Sospecho que la networkingucción de 100 inputs a un solo directory también ayudaría, pero desafortunadamente tenemos algunos files en cada uno de estos directorys de salida que están registrados.

Mi solución fue eliminar routes completas de files en .gitignore e ignorar directorys en su lugar siempre que sea posible.

Solo para notar que mi gitignore tenía 15000 líneas de longitud.