remove - Msysgit bash es tremendamente lento en Windows 7
git remove tag (19)
Acabo de solucionar este problema por un tiempo y tuve dificultades para identificar el origen del problema. Al final encontré dos cosas que tuvieron un impacto dramático:
- Desactivando el servicio de búsqueda de Windows. Esto tuvo un efecto dramático en el rendimiento.
- Cierre de extensiones de Git. Tener la ventana Explorar extensiones de Git abierta en el fondo hizo que los tiempos de ejecución del comando Cygwin git aumentaran por un factor aparentemente aleatorio de hasta alrededor de 10.
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 muy buena 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
lleva unos cinco segundos . AAAAH!
¿Alguien ha experimentado un problema similar?
Editar : parece que msysgit no está jugando muy bien con UAC y podría ser un pequeño descuido de diseño resultante de desarrollar en XP o ejecutar Vista o 7 con UAC deshabilitado; iniciar Git Bash utilizando Run as administrator
da Run as administrator
resultado la velocidad del rayo que veo con OS X (o el 7 después de iniciar Git Bash sin una conexión de red - vea la respuesta de @Gauthier).
Editar 2 : AH HA! Ver mi respuesta
Alas ''Run as Administrator'' no funcionó para mí, pero como descubrió Kevin L, desconectar el adaptador de red, ejecutar git bash, luego volver a conectar funcionaba bien. Así que envolví esto en un script por lotes y puse un atajo en mi menú Inicio, marcado para que se ejecute como administrador:
netsh interface set interface "Local Area Connection" DISABLED
cd "%USERPROFILE%/Documents/Visual Studio 2010/Projects"
start cmd /c ""C:/Program Files/Git/bin/sh.exe" --login -i"
netsh interface set interface "Local Area Connection" ENABLED
Funciona bien, siempre y cuando recuerde que mi red se corta momentáneamente.
(Win 7 Professional SP1, Git versión 1.7.8-preview20111206)
Como se encuentra en este tema , ejecutar con la virtualización de UAC desactivada (no es necesario deshabilitar el UAC por completo) hace una gran diferencia.
Esta publicación explica cómo desactivarla (consulte la parte inferior de la publicación, solo una configuración de registro).
En un repositorio SVN (grande) me estoy conectando, haciendo que el cambio anterior reduzca el tiempo necesario para "git svn rebase" de 15s a 5s, una mejora de factor 3.
Descubrimos que, al ejecutar ciertas cuentas de usuario, separe las instancias de git.exe bloqueadas en una llamada a WaitForSingleObject()
, de modo que solo una sola 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://.com/a/13054022
El problema aquí podría ser completar bash si eso está habilitado, que es bastante más lento en Windows que en Linux.
Intenta configurar la variable PS1 a algo simple como "$", y mira si esto acelera las cosas. Si lo hace, tenga en cuenta que ha habido algunas optimizaciones para la finalización de bash en versiones recientes de ish git. Quizás necesites actualizar.
Es posible que desee intentar desinstalar msysgit, reiniciar Windows, instalar la última versión de msysgit. Pareció hacer el truco para mí. Encontré esta sugerencia aquí:
https://.com/a/4506192/1413941
EDITAR
PD. Ya tuve el UAC desactivado antes de toparme con problemas lentos de Git, así que no sé si se requiere la desactivación del UAC o no para que Git funcione rápido.
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 en consecuencia.
Intenté casi todos los consejos aquí (incluido el de mi otra respuesta) en una máquina nueva, pero no funcionaron, Git sigue lento como el infierno.
Luego eché un vistazo al software virusscanning (que estaba preinstalado): desactivé el escaneo en tiempo real de McAfee Security Center , y ¡listo: ahora está funcionando rápido! El tiempo necesario para "git svn rebase" se redujo de 30 segundos a 5 segundos (!).
Espero que esto sea útil para otras personas que todavía tienen problemas con el lento Git en Windows, perdí horas averiguando esto.
La mejor solución es ejecutar 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 de que ese estado de git tardara aproximadamente 30 segundos y después de eso, es la misma cantidad que se muestra en la salida - Tomó X segundos para ...
La solución para la lentitud en Vista o 7 parece estar ejecutando Git Bash usando Run as administrator
(o deshabilitando UAC para el shortcut Git Bash ... o deshabilitando el UAC por entirely ). La diferencia es día y noche y usar git en 7 es increíble de nuevo.
Esto parece estar relacionado con un problema conocido y, como he especulado, XP como entorno de desarrollo para msysgit es parcialmente responsable.
Me he encontrado con el mismo problema al ejecutar git para Windows (msysgit) en Windows 7 x64 como una cuenta de usuario limitada durante bastante tiempo. Según lo que he leído aquí y en otros lugares, el tema común parece ser la falta de privilegios administrativos y / o UAC. Como el 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, he resuelto 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 funcione el zipinstaller. También tuve que agregar manualmente ese directorio a la ruta de mi sistema.
El rendimiento está bien ahora. Aunque está instalado en el directorio Archivos de programa (x86), que no tengo permisos para un 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 donde escribe / elimina archivos, que probablemente sea el caso, o en la actualización de 1.7 a 1.8. No voy a tratar de precisar cuál es el motivo, basta con decir que ahora funciona mucho mejor.
Para mí, el problema fue el uso de __git_ps1 en el intérprete de comandos del shell, supongo que debido al acceso lento al disco en msysgit.
La solución era eliminar $ (__ git_ps1) de las líneas PS1 = ... en / etc / profile
prueba rápida si se aplica esta solución: en un shell git, escriba export PS1 = ''$'' y verifique la velocidad de sus operaciones.
Probablemente se trate de un mensaje que analice su repositorio de Git. Puede probar haciendo "clear" en algún lugar fuera de un repositorio de Git. Y puedes acelerarlo parcheando git-completion.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 para usted de forma gratuita.
También me parece bastante divertido no hacer la pregunta en la lista de correo de msysGit, pero ahora estoy divagando.
Puede acelerar significativamente git en Windows ejecutando tres comandos para establecer algunas opciones de configuración:
$ git config --global core.preloadindex true
$ git config --global core.fscache true
$ git config --global gc.auto 256
Notas:
core.preloadindex
hace las operaciones del sistema de archivos en paralelo para ocultar la latencia (actualización: habilitada por defecto en git 2.1)core.fscache
corrige los problemas de UAC, por lo que no necesita ejecutar git como administrador (actualización: habilitada de manera predeterminada en Git para Windows 2.8)gc.auto
minimiza la cantidad de archivos en .git /
Si apagar el 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 encuentre la clave de registro
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/services/luafv
Cambie el valor de Start
de 2 a 4.
Encontré los detalles sobre cómo deshabilitar luafv
here . Tenga en cuenta que personalmente no tengo idea de lo que es o hace luafv
. Esa página da varias advertencias sobre cosas malas que podrían suceder si la apagas, lo que probablemente debas tomar en serio.
EDITAR: El comentario a continuación señaló que lo hice al revés (el enlace lo tiene al revés). Está arreglado ahora. Lo siento por las personas cuyos registros he destruido :)
También puede obtener un aumento de rendimiento importante al cambiar la siguiente configuración de git:
git config --global status.submoduleSummary false
Al ejecutar el comando simple git status
en Windows 7 x64, mi computadora tardó más de 30 segundos en ejecutarse. Después de definir esta opción, el comando es inmediato.
Activar el seguimiento 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: github.com/msysgit/msysgit/wiki/Diagnosing-why-Git-is-so-slow
Tengo MacAffee y le digo que excluya el directorio .git y que todos los subdirectorios del análisis en tiempo real aborden el problema de rendimiento.
Un colega mío tenía este comportamiento cada vez que se ejecutaba Outlook. Intentando matar las perspectivas y probar de nuevo.
También puedes intentar probar:
- sin conexión a ninguna red,
- sin antivirus en ejecución,
- sin ningún otro programa en ejecución.
Una alternativa para 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 ''Ejecutar como administrador'' y con los controles de UAC en vano, pero me rendí y comencé una nueva instalación. Estaba obteniendo unos 15 Kbps máximo antes, pero ahora es más de 60 Kb / s.