trucos tag subir que name hace conectar con commits commands comentarios archivos git git-status

tag - subir archivos git



Git enumera los archivos no rastreados inexistentes lentamente (3)

Estoy usando git para el control de origen en un repositorio. Recientemente, comenzó a advertirme sobre el tiempo que lleva enumerar los archivos sin seguimiento cuando se utiliza 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 archivos sin seguimiento en este repositorio; verifiqué con git status -uall . Alguna otra información posiblemente relevante:

  • He notado que esta advertencia solo aparece cuando el git status toma algunos segundos en ejecutarse.
  • Mi repositorio es de 130.6 MB en este momento.
  • Mis productos de construcción son todos fuera de árbol.

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

Aquí hay algunas otras preguntas relevantes:

  • formas de mejorar el rendimiento del estado de Git
  • Estado de Git tarda mucho tiempo en completarse

Mi solución fue eliminar las rutas de archivo completas en .gitignore e ignorar los directorios cuando sea posible.

Sólo para tener en cuenta mi gitignore fue 15000 líneas de largo.


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

Problema: También tuve este problema, pero mi HD (s) está bien. Se tarda 3-5 segundos para hacer un "estado git" en una unidad SSD y 4-8 segundos en una magnética. Es mucho más rápido después de haberlo hecho varias veces. También veo este error acerca de tardar tanto en enumerar archivos sin seguimiento, pero no tengo cambios para confirmar.

Solución rápida: elimine los archivos ocultos por sus archivos .gitignore.

Mejor solución: deje de construir en el mismo directorio que está en control de código fuente.

Por qué: Git todavía tiene que revisar todos los archivos no rastreados, ver si hay nuevos y luego cotejarlos con las entradas en .gitignore. Este error no significa que tenga archivos que deban registrarse, sino que se está demorando mucho en estos días averiguar si hay un archivo que deba registrarse.

En un checkout limpio donde no hay archivos que ocultar git ignore y una unidad SSD, la ejecución del "estado de git" tarda 0,8 segundos.

Una última nota: este es un proyecto muy antiguo y tenemos un archivo .gitignore muy grande. Sospecho que reducir 100 entradas a un solo directorio también ayudaría, pero desafortunadamente tenemos algunos archivos en cada uno de estos directorios de salida que están registrados.


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

He reemplazado mi disco y desde entonces no he encontrado este problema.

El problema no estaba en git en sí, sino que estaba en el hardware de la computadora.
Una vez que se reemplazó el HD - problema resuelto.