Estoy usando git
para administrar archivos en un directorio local en una máquina con Windows; no hay red involucrada aquí, no estoy presionando o tirando hacia / desde otra máquina. Mi directorio tiene quizás 100 archivos, todos los archivos de prueba, bastante pequeños. Cuando corro git status
, suele tardar entre 20 y 30 segundos en completarse. ¿Esto es normal? ¿Hay algo que pueda hacer para acelerarlo, o una mejor manera de ver cuál es el estado de mi repositorio (archivos modificados, archivos sin seguimiento, etc.)? Otros git
comandos parecen completarse mucho más rápido.
85
Respuestas:
¿Has probado git gc ? Esto limpia cruft del repositorio de git.
fuente
git status
usando eltime
comando y obtuve un tiempo "real" de 30.464s. Entonces corriógit gc
a continuación,time git status
una vez más, y consiguió un tiempo real de 35.409s. Bastante extraño.git status
varias veces seguidas, las ejecuciones posteriores toman solo una fracción de la primera. Entonces, si está ejecutandogit status
, unagit gc
ygit status
otra vez, se espera que funcione muy rápido.En un problema similar, descubrí que tener un repositorio de git en un directorio debajo de mi repositorio de git existente causaba una ralentización masiva.
Moví el repositorio de git secundario a otro lugar y ahora la velocidad es rápida.
fuente
¿Está utilizando algún tipo de software de protección antivirus? Quizás eso esté interfiriendo con las cosas.
git
es muy rápido para mí en Windows con repositorios de miles de archivos.fuente
¿Ha intentado reempacar? git-repack .
De lo contrario, intente duplicar el directorio y eliminar la carpeta .git en el directorio duplicado. Luego, cree un nuevo directorio git y vea si todavía es lento.
Si todavía es lento, entonces parece un problema de sistema o hardware. Git finaliza el estado de cientos de archivos por mí en menos de 5 segundos.
fuente
Por alguna razón
git status
es particularmente lento después de mover o copiar la carpeta del repositorio a una nueva ubicación.En este caso, las ejecuciones posteriores suelen ser más rápidas.
fuente
git status
comando inicial , por lo que probablemente tomaría la misma cantidad de tiempo en completarse.Mi
git status
fue muy lento (hasta un minuto), porque el.gitignore
archivo global estaba ubicado en mi perfil de usuario de Windows, que estaba almacenado en un recurso compartido de red inaccesible.git config --global core.excludesfile
mostró algo como
\\Nxxxx0\User\Username\Eigene Dateien\gitignore_global.txt
Por alguna razón
\\Nxxxx0
era inaccesible y mi perfil de usuario se cargó desde un sistema de respaldo\\Nxxxxx1
. Me tomó algún tiempo darme cuenta de eso, porque generalmente mi perfil de usuario está vinculado a una letra de unidad mediante un script de inicio de empresa y acceder a esa letra de unidad funcionaba como de costumbre. No estoy seguro de por qué git-config usó el recurso compartido de red y no la letra de la unidad (probablemente un yo más joven tiene la culpa)Después del fraguado
git config --global core.excludesfile $HOME/Eigene\ Dateien/gitignore_global.txt
git status
volvió a la velocidad normal.fuente
Correr me
git fsck
ha resuelto este problema en el pasado.fuente
Para mí, la lentitud se debió a tener muchos archivos sin seguimiento (archivos temporales y de salida de scripts) en ejecución
git status -uno
, lo que excluye los archivos sin seguimiento, se ejecutó mucho más rápido y cumple con mis requisitosfuente
El problema para mí fue que tenía muchos repositorios diferentes clonados en mi disco duro local, mientras más repositorios tenga, más tiempo llevará ejecutar comandos como git status.
Simplemente eliminé muchos de los repositorios que ya no necesitaba localmente, y mi estado de git pasó de 1 minuto ~ a 5 segundos.
No puedo ver ninguna respuesta similar a esta aquí.
fuente
git status
que ejecuta en un directorio de ninguna manera. Si sus repositorios están extraídos en diferentes directorios, solo puede ejecutargit status
uno de ellos a la vez. Podría ser una historia diferente si sus repositorios de git se superponen, pero de todos modos esa es una mala idea.Otro aspecto
git status
que se mejorará (en Git 2.14.x / 2.15, Q4 2017) es cuando también muestra archivos ignorados (git status --ignored
)Consulte la confirmación 5aaa7fd (18 de septiembre de 2017) de Jameson Miller (
jamill
) .(Combinado por Junio C Hamano -
gitster
- en el compromiso 075bc9c , 29 de septiembre de 2017)Para obtener más mejoras (establecidas en Git 2.17, Q2 2018), consulte esta respuesta .
fuente
node_modules
podría verse afectado por este cambio de rendimiento. Solo tal vez.Las versiones anteriores de git tienen un problema de rendimiento con el estado de git; consulte Formas de mejorar el rendimiento del estado de git para obtener más información.
git 2.13 tiene 1 corrección y 2.17 más. Pasé de 2.7 a 2.23 y resolvió el estado lento. Hay otra mejora prevista para 2.24 pronto.
fuente
En mi caso, la lentitud se debió a que se ejecutaba
git status
como un usuario diferente al propietario de los archivos del proyecto.Si bien no es aplicable en todos los casos, un simple
chown
para su usuario actual puede hacer el truco.fuente
Intente comenzar con un nuevo clon de su pago.
y luego hacer git status en mynewrepo.
Alternativamente, y si eres más valiente, limpia la basura de tu caja actual.
Esto evita que git tenga que escanear un conjunto (posiblemente grande) de archivos ignorados o no registrados.
fuente