Git en Windows: ¿MSYS o Cygwin?

Planeo migrar mis proyectos a git, y actualmente me pregunto cuál es la mejor y más estable opción en Windows.

Por lo que veo, básicamente tengo 2.5 opciones:

  1. MSYSgit
  2. git bajo Cygwin
  3. (también conocido como 2.5) MSYSgit desde un prompt de Cygwin (dado que Cygwin git ya está instalado).

Nota: IMO Cygwin en sí mismo es una gran ventaja, ya que puede tener acceso a casi todas las herramientas de línea de command * nix, ya que con MSYSgit bash, solo tiene acceso a un subset bastante pequeño de estas herramientas.

Dado eso, ¿qué opción sugerirías?

Editar (2 años más tarde: octubre de 2014)

Johannes Schindelin acaba de explicar (octubre de 2014) que msysgit está eliminado :

ahora tenemos un Git ligero para Windows SDK , que es esencialmente un sistema MinGW / MSys estándar administrado a través del administrador de packages mingw-get.

Decidimos eliminar el nombre "msysGit" (así como también la organización GitHub del mismo nombre ) y trabajar en Git para Windows (con la organización GitHub correspondiente) y usar el nombre "Git para Windows" para el instalador. en "usuarios finales" y "Git for Windows SDK" para el entorno de desarrollo dirigido a desarrolladores de Git for Windows).


Editar (3 años después: abril de 2012)

MsysGit (ahora en GitHub ) es el path a seguir si quieres un inicio rápido y ligero en el mundo de Git: descomprime el file, git-cmd.bat o git-bash.bat y listo.
Su último lanzamiento (1.7.10, abril de 2012) ahora incluye soporte para UTF-8 , también incluido en GitExtension . autocrlf embargo, no olvides configurar tu autocrlf en falso .

Si realmente te faltan todos los otros commands de Unix, no packages con msysgit, simplemente descarga un lanzamiento de GoW (Gnu en Windows) , acertadamente llamado "La alternativa ligera a Cygwin".
Quiero decir: 130 commands de unix s …

Cygwin debe ser una solución de respaldo solo para ciertos casos, como la velocidad de transferencia de repositorys grandes de Git, como se menciona más abajo por incrementor en su respuesta .


Junio ​​de 2012: si desea interactuar con GitHub , ahora tiene http://windows.github.com (consulte también " Diseñar GitHub para Windows ").
No solo configurará las keys ssh por usted (y agregará la key pública generada a su perfil de GitHub), sino que también instalará, para todas las operaciones de git, un … MsysGit.


Respuesta original (abril de 2009)

No tengo ningún problema con la última versión de MsysGit:
Utilizo la opción 2 , lo que significa que solo agrego el directory git \ bin a la variable de entorno PATH, pero sin anular algunas herramientas incorporadas de Windows.

Logré definir herramientas externas como Notepad ++ y WinMerge (o DiffMerge)

Ejecuté scripts exitosos como svn2git porque, desde MsysGit1.6.2 +, incluye el command ' git svn '.

¡Y finalmente espero MsysGit1.6.2.3 porque includeá finalmente el command ' git filter-branch ' ! (una versión lenta de filter-branch, pero todavía).

Para el command de Unix, prefiero instalar un package coreutils de GnuWin32 , y usarlos solo cuando los necesito.

Así que, en general, no uso Cygwin y logré ejecutar Git muy bien en su versión basada en Windows MsysGit.

Sí. Vieja pregunta Nueva respuesta:

Hemos estado usando MSYSgit durante aproximadamente 2 años en una gran implementación. La velocidad de las transferencias desde un server de repository git local se ha limitado a less de 5 MiB / s. La investigación anterior sobre el problema indicó que el problema era que los desarrolladores de MSYS estaban en Windows XP y la security de Windows 7 limitando las conexiones desde el símbolo del sistema / shell bash. Esto no parece ser, de hecho, el problema.

Descubrí la publicación del blog de Darrell Mozingo y probé un clon de un repository grande (muchos GiB) usando solo una installation de Cygwin. Las velocidades de transferencia estaban en el range de 30 MiB / s. El problema es que MSYSgit usa un antiguo binary OpenSSH de 2007.

Con este fin, hasta que eso se solucione, ahora estoy recomendando un cambio a Cygwin (aunque la versión de git está un poco retrasada). También encontré que Cygwin es más estable y less probable que Perl se quede sin memory.

He incursionado con el uso de las versiones MSYS y Cygwin de git, y para ser sincero, no encontré experiencia alguna especialmente buena. Simplemente no creo que git esté realmente listo para Windows aún.

Dicho esto, un problema que encontré con la versión MSYS es que convertiría los finales de línea en sus files (no binarys) del estilo UNIX (avance de línea) al estilo DOS (retorno de carro / avance de línea). Puede considerar esto como un error o una característica, pero no hay forma de cambiar el comportamiento que pude encontrar. (EDIT: establece la variable de configuration core.autocrlf en false . Gracias Brian).

OTOH, la versión de MSYS de git tiene alguna funcionalidad de GUI que no está disponible en la versión de cygwin a less que desee instalar y ejecutar un server X completo. (Gracias Joce por confirmar esto.)

Mi printing es que la versión MSYS es más popular, aunque puede deberse a que no es necesario instalar un ecosistema cygwin para usarla. (Y estoy de acuerdo, cygwin es extremadamente útil).

Personalmente, iría con Bazar o Mercurial , cualquiera de los cuales tiene mejor soporte para Windows IMO.

Tanto Cygwin como Msys Git funcionan bastante bien para casos de uso normales. Si desea utilizar scripts como git-svn, Cygwin es una mejor opción. Como un antiguo usuario de Windows que finalmente saltó a Linux, definitivamente puedo decir que Cygwin es una gran ayuda y que vale la pena tenerlo en sí mismo.

El context es importante sin embargo; ¿Qué proyectos son estos? ¿Con quién son usados? Etc.

También probé ambos mundos (CygWin y MSysgit), mi experiencia también es que hay algunas fallas en MSysgit bash. Incapaz de ejecutar git stash con éxito mientras Cygwin lo manejaba con gracia en el mismo git repo.

Sin embargo, todavía no se realizó un análisis profundo …

Actualmente uso Msysgit junto con TortoiseGit.

La interfaz de usuario de MsysGit no es realmente de mi agrado, así que uso una herramienta familiar como TortoiseGit y cuando trabajo en la command-line (la mayoría de las veces), uso el git binary de Msysgit

Recomendaría msysgit. Especialmente si se usa con extensiones de Git : proporciona una forma sencilla de configurar el entorno: herramientas de editor / diff / merge, y permite realizar operaciones de git avanzadas desde la interfaz de usuario.

Me he encontrado con errores graves en la implementación cygwin de MSys: algunos commands, especialmente la rebase, eran bastante propensos a fallar. Cygwin's fue mucho más estable para mí.

Dicho esto, fue hace un mes, podría haber mejorado desde entonces.

He usado tanto Cygwin Git como Msysgit con Windows. Sugeriría usar Cygwin + Git. Cygwin 1.7 (actualmente en beta) aborda un matiz importante (al less para mí) al usar git gui y gitk. Las versiones anteriores de Cygwin solían abrir 10s de windows de cmd cada vez que hago algo en git-gui o gitk. Esto ha sido abordado en 1.7. El poderoso shell de Cygwin trae muchos de los beneficios de la terminal de Linux también.

Dicho esto, Msysgit ha evolucionado bastante y es realmente útil en Windows. Me enfrenté a un par de problemas sin embargo.

Problema de permiso: algunos files creados originalmente en Windows tenían el modo 755 que se convirtió a 644 mientras usaba Msysgit. Esto se mostraría como files modificados. Un logging debe solucionar este problema.

CRLF: El CRLF todo escurridizo como siempre crea problemas en Windows. Msysgit podría informar los files como modificados. Esto puede solucionarse seleccionando "Dejar los finales de línea sin cambios" (se olvidó el text exacto) al instalar Msysgit.

Daemon: Y sí, aún me resulta difícil configurar git daemon en Msysgit.

Nueva respuesta a una vieja pregunta …

Estoy usando git 1.7.3 desde un shell de Windows 7 y funciona de maravilla. Uso una mezcla de git command line y git gui, y ambos funcionan bien desde hace meses. Tuvimos problemas de retorno de carro / alimentación de línea, exacerbados cuando agregamos desarrolladores de Mac al equipo, pero estos se resolvieron con …

 core.autocrlf=true core.safecrlf=false 

No dice que no debe usar un shell * nix-y, solo que no es necesario.

Tengo reservas con respecto a CygWin porque solo quiero git y ninguna de las otras herramientas que Cygwin quiere include. Normalmente quieres que tu computadora Windows funcione como una computadora Windows y CygWin quiere dar una bofetada a algo completamente diferente. Golpear en la funcionalidad * nix solo para las patadas no es ir.

La cuestión es que si alguna vez quiero trabajar con * nix como línea de command, iría a mi máquina Linux y trabajaría en esa computadora. Las computadoras virtuales y los escritorios remotos funcionan hoy como un encanto y son lo suficientemente accesibles para los desarrolladores.

Realmente debe haber una razón legítima para que esté usando CygWin. Si es solo por usar git, te sugiero que utilices MSysGit, que es mi preference. Funciona muy bien con las herramientas gitk y git-gui que se incluyen. He estado trabajando en Eclipse y Visual Studio usando msysgit y funciona como un encanto.

Lo único que estoy esperando ahora es un clon de tortuga completamente funcional para git .

Hay un escenario en Windows donde simplemente tiene que usar Git a través de Cygwin: Esto es cuando desea usar Git contra un server SVN, que espera versiones de cliente SVN superiores a 1.5. Existen enlaces de precompilation SVN que bloquean las confirmaciones cuando no hay un argumento 'mergeinfo', y el argumento 'mergeinfo' está pnetworkingeterminado en SVN solo desde la versión 1.5. El problema con msysGit es que está construido contra una versión anterior de SVN (1.4.6), por lo que no puede comprometerse correctamente en este caso. Pero es posible con Cygwin's Git, ya que está basado en versiones más nuevas de SVN.

Si solo quiere hacer acciones simples como empujar / tirar / ramificar, puede probar SourceTree de Atlasian. Una interfaz de usuario muy simple y clara para el command Git. Sin embargo, tiene poco time.

Si necesita utilizar la herramienta git de command-line, simplemente obtenga la herramienta Git for windows. Debería ser suficiente, a less que comiences a search en bash scripting.