Me encanta git y lo uso en OS X casi constantemente en casa. En el trabajo, usamos svn en Windows, pero queremos migrar a git tan pronto como las herramientas hayan madurado por completo (no solo TortoiseGit , sino también algo parecido a la integración de Visual Studio realmente agradable proporcionada por VisualSVN ). Pero yo divago...
Recientemente instalé msysgit en mi máquina con Windows 7, y cuando uso la versión incluida de bash, es tremendamente lento. Y no solo las operaciones de git; clear
tarda unos cinco segundos . AAAAH!
¿Alguien ha experimentado un problema similar?
Editar : Parece que msysgit no funciona bien con UAC y podría ser solo un pequeño descuido de diseño resultante de desarrollar en XP o ejecutar Vista o 7 con UAC desactivado; iniciar Git Bash usando Run as administrator
resultados a la velocidad del rayo que veo con OS X (o en 7 después de iniciar Git Bash sin una conexión de red; consulte la respuesta de @Gauthier).
Edición 2 : ¡ AH HA! Mira mi respuesta.
Respuestas:
Puede acelerar significativamente Git en Windows ejecutando tres comandos para establecer algunas opciones de configuración:
Notas:
core.preloadindex
realiza operaciones del sistema de archivos en paralelo para ocultar la latencia (actualización: habilitada de forma predeterminada en git 2.1)core.fscache
corrige problemas de UAC para que no necesite ejecutar Git como administrador (actualización: habilitada de forma predeterminada en Git para Windows 2.8)gc.auto
minimiza el número de archivos en .git /fuente
git config --global core.fscache true
no hizo nada por mí; sin embargo,git config core.fscache true
funcionó. De acuerdo con esto , es porque core.fscache es una configuración por repositorio.fscache
solo funcione como una configuración por repositorio. La configuración global se aplica a todos los repositorios en una máquina a menos que la configuración por repositorio la anule.La solución para la lentitud en Vista o 7 parece ejecutar Git Bash usando
Run as administrator
(o deshabilitando UAC para el acceso directo de Git Bash ... o deshabilitando UAC por completo ). La diferencia es la noche y el día y usar git en 7 es increíble de nuevo.Esto parece estar relacionado con un problema conocido y, como especulé , XP como entorno de desarrollo para msysgit es parcialmente responsable.
fuente
ls
en un directorio prácticamente vacío)Para mí, el problema fue el uso de __git_ps1 en el indicador de shell, supongo que debido al acceso lento al disco en msysgit.
La solución fue eliminar $ (__ git_ps1) de las líneas PS1 = ... en / etc / profile
Prueba rápida si se aplica esta solución: en un shell de git, escribe export PS1 = '$' y verifica la velocidad de tus operaciones.
fuente
__git_ps1
activo, si deshabilita la configuración SHOWDIRTYSTATE y / o SHOWUNTRACKEDFILES, consulte stackoverflow.com/a/4203968/321973Probé casi todos los consejos aquí (incluido el de mi otra respuesta) en una nueva máquina, pero no funcionaron, Git sigue siendo muy lento.
Luego eché un vistazo al software de escaneo de virus (que estaba preinstalado): desactivé el escaneo en tiempo real de McAfee Security Center , y listo: ¡git ahora es increíblemente rápido! El tiempo necesario para "git svn rebase" se redujo de 30 a 5 segundos (!).
Espero que esto sea útil para otras personas que aún tienen problemas con Git lento en Windows, perdí horas resolviendo esto.
fuente
Por desgracia, 'Ejecutar como administrador' no funcionó para mí, pero como Kevin L descubrió, desconectar el adaptador de red, iniciar git bash y luego volver a conectar funcionó bien. Así que envolví esto en un script por lotes y le puse un acceso directo en mi menú Inicio, marcado para ejecutarse como administrador:
Funciona de maravilla siempre que recuerde que mi red se corta momentáneamente.
(Win 7 Professional SP1, Git versión 1.7.8-preview20111206)
fuente
Un colega mío tenía este comportamiento siempre que se ejecutaba Outlook. Intentando matar a Outlook y probar de nuevo.
También puede intentar probar:
fuente
Descubrimos que, cuando se ejecuta en ciertas cuentas de usuario, las instancias de git.exe separadas se bloquean en una llamada a
WaitForSingleObject()
, por lo que solo una única operación de git.exe podría ejecutarse de manera efectiva a la vez. Cambiar la cuenta de usuario solucionó este problema.Detalles aquí: https://stackoverflow.com/a/13054022
fuente
Tengo MacAffee y decirle que excluya el directorio .git y todos los subdirectorios del escaneo en tiempo real solucionó el problema de rendimiento.
fuente
Como se encuentra en este problema , la ejecución con la virtualización de UAC desactivada (no es necesario deshabilitar UAC por completo) marca una gran diferencia.
Esta publicación explica cómo desactivarlo (consulte la parte inferior de la publicación, solo una configuración de registro).
En un repositorio SVN (grande) al que me estoy conectando, el cambio anterior redujo el tiempo necesario para "git svn rebase" de 15 a 5 segundos, una mejora de factor 3.
fuente
Una alternativa a jugar con el UAC de Windows 7 puede ser instalar mysysgit fuera de la carpeta Archivos de programa. Por ejemplo, en lugar de "C: \ Archivos de programa (x86) \ Git", intente instalar en "C: \ git"
Intenté jugar con los controles de 'Ejecutar como administrador' y UAC en vano, pero me di por vencido y comencé una nueva instalación. Antes obtenía unos 15 KB / s como máximo, pero ahora supera los 60 KB / s.
fuente
Si apagar UAC no mejora el rendimiento, intente apagar el controlador luafv. Esto funcionó para mí después de probar casi todo en esta página y un par de preguntas similares. Git ha pasado de ser inusualmente lento a bastante decente.
Abra 'regedit' y busque la clave de registro
Cambie el valor de
Start
2 a 4.Encontré los detalles sobre cómo deshabilitar
luafv
aquí . Tenga en cuenta que personalmente no tengo idea de lo queluafv
es o hace. Esa página ofrece varias advertencias sobre cosas malas que podrían suceder si la apaga, lo que probablemente debería tomar en serio.EDITAR: El comentario a continuación señaló que entendí esto al revés (el enlace lo tiene al revés). Ahora está arreglado. Lo siento por las personas cuyos registros destruí :)
fuente
He estado solucionando este problema por un tiempo y me costó identificar la fuente del problema. Al final encontré dos cosas que tuvieron un impacto dramático:
fuente
El problema aquí podría ser la finalización de bash si está habilitada, que es un poco más lenta en Windows que en Linux.
Intente configurar la variable PS1 en algo simple como "$", y vea si esto acelera las cosas. Si es así, tenga en cuenta que ha habido algunas optimizaciones en la finalización de bash en versiones recientes de git. Quizás necesite actualizar.
fuente
Esto funcionó para mí. No espere que sea una solución única para todos.
Verifique la variable de entorno $ HOME en bash y windows. Si apunta a una cuenta de usuario, verifique el perfil / permisos de Windows del usuario. Cambie la cuenta de usuario o $ HOME según corresponda.
fuente
He encontrado el mismo problema al ejecutar git para Windows (msysgit) en Windows 7 x64 como una cuenta de usuario limitada durante bastante tiempo. Por lo que he leído aquí y en otros lugares, el tema común parece ser la falta de privilegios administrativos y / o UAC. Dado que UAC está desactivado en mi sistema, la explicación de que está intentando escribir / eliminar algo en el directorio de archivos del programa tiene más sentido para mí.
En cualquier caso, resolví mi problema instalando la versión portátil de git 1.8 con zipinstaller. Tenga en cuenta que tuve que descomprimir el archivo de distribución .7z y volver a empaquetarlo como un zip para que el instalador zip funcione. También tuve que agregar manualmente ese directorio a la ruta de mi sistema.
La actuación está bien ahora. Aunque está instalado en el directorio Archivos de programa (x86), para el que no tengo permisos como usuario limitado, no parece sufrir el mismo problema. Atribuyo esto al hecho de que la versión portátil es un poco más conservadora en la que escribe / elimina archivos, que probablemente sea el caso, o a la actualización de 1.7 a 1.8. No voy a tratar de precisar cuál es la razón, basta con decir que ahora funciona mucho mejor.
fuente
Es posible que desee intentar desinstalar msysgit, reiniciar Windows, instalar la última versión de msysgit. Pareció hacerme el truco. Encontré esta sugerencia aquí:
https://stackoverflow.com/a/4506192/1413941
EDITAR
PD: Ya tenía UAC deshabilitado antes de tener problemas de Git lentos, por lo que no sé si es necesario deshabilitar UAC o no para que Git funcione rápidamente.
fuente
La mejor solución es ejecutarla como administrador, como se señaló. Sin embargo, otra opción para hacer que el estado de git sea rápido, al menos, es trustctime = false . Antes, ese estado de git tardaba unos 30 segundos y después es la misma cantidad que se muestra en la salida: tardaron X segundos en ...
fuente
También puede obtener un aumento importante del rendimiento si cambia la siguiente configuración de git:
Al ejecutar el
git status
comando simple en Windows 7 x64, mi computadora tardó más de 30 segundos en ejecutarse. Una vez definida esta opción, el comando es inmediato.Activar el rastreo propio de Git como se explica en la siguiente página me ayudó a encontrar el origen del problema, que puede diferir en su instalación: https://github.com/msysgit/msysgit/wiki/Diagnosing-why-Git-is-so- lento
fuente
Probablemente sea una cuestión del indicador que analiza su repositorio de Git. Puede probar haciendo "borrar" en algún lugar fuera de un repositorio de Git. Y puede acelerarlo parcheando git-completation.bash o jugando trucos con core.filemode.
En cuanto a la integración de Visual Studio: esto es de código abierto. Es injusto esperar que otros trabajen gratis para usted.
También me parece bastante divertido no hacer la pregunta en la lista de correo msysGit, pero ahora estoy divagando.
fuente