Git sous windows: MSYS ou Cygwin?

j'ai l'intention de migrer mes projets vers Git, et je me demande actuellement Quelle est la meilleure option et / ou la plus stable sous windows.

D'après ce que j'ai compris, j'ai fondamentalement 2.5 options:

  1. MSYSgit
  2. git sous Cygwin
  3. (aka 2.5) MSYSgit d'une invite Cygwin (étant donné que Cygwin git est déjà installé).

Note: IMO Cygwin en lui-même est un grand plus que vous pouvez avoir accès à presque tous les outils en ligne de commande *nix, comme avec MSYSgit bash, vous avez seulement accès à un assez petit sous-ensemble de ces outils.

étant donné cela, quelle option suggérez-vous?

79
demandé sur joce 2009-04-24 03:01:44

13 réponses

Edit (2 autres années plus tard: octobre 2014)

Johannes Schindelin vient de l'expliquer (Oct. 2014) que msysgit est éliminé :

nous avons maintenant un léger Git pour Windows SDK -qui est essentiellement un système standard MinGW/MSys géré par le gestionnaire de paquets mingw – get.

nous avons décidé pour simplement supprimer le nom "msysGit" (ainsi que le GitHub org du même nom ) et de travailler sur Git for Windows (avec le correspondant GitHub org) , et en utilisant le nom "Git for Windows" pour l'installateur visant à "utilisateurs finaux" et "Git for Windows SDK" pour l'environnement de développement ciblant git pour les développeurs Windows).


Edit (3 ans plus tard: avril 2012)

MsysGit (maintenant sur GitHub ) est la voie à suivre si vous voulez un démarrage rapide léger dans le monde Git: unzip l'archive, lancement git-cmd.bat 151990920 "ou git-bash.bat et vous êtes fait.

Son dernière version (1.7.10, avril 2012) comprend maintenant prise en charge pour UTF-8 , également inclus dans GitExtension . N'oubliez pas de définir votre autocrlf à false cependant.

si vous manquez vraiment toutes les autres commandes unix qui ne sont pas des paquets avec msysgit, téléchargez simplement une version de GoW (Gnu sur Windows) , nommée à juste titre"l'alternative légère à Cygwin".

Je veux dire ... : 130 commande unix s...

Cygwin devrait être une solution de secours seulement pour certains cas, comme la vitesse de transfert de grand dépôts Git, comme mentionné ci-dessous par incrementor dans sa réponse .


juin 2012: si vous voulez interagir avec GitHub , vous avez maintenant http://windows.github.com (voir aussi " conception GitHub pour Windows ").

Il va non seulement configurer les clés ssh pour vous (et ajouter la clé publique générée à votre profil GitHub), mais il va également installer, pour toutes les opérations git, A... MsysGit.


réponse Originale à cette question (avril 2009)

Je n'ai aucun problème avec la dernière version de MsysGit:

J'utilise la option 2 , ce qui signifie que j'ajoute seulement le répertoire git\bin vers la variable D'environnement PATH, mais sans passer par dessus certains outils windows intégrés.

j'ai réussi à définir des outils externes comme Notepad++ et WinMerge (ou DiffMerge)

j'ai exécuté avec succès des scripts comme svn2git parce que, à partir de MsysGit1.6.2+, Il inclut la commande ' git svn '.

et enfin je me réjouis MsysGit1.6.2.3 pour lui inclura enfin git filter-branch " commande ! (une version lente de filter-branch, mais quand même).

pour la commande Unix, je préfère installer un paquet GnuWin32 coreutils , et ne les utiliser que lorsque j'en ai besoin.

donc, dans l'ensemble, je n'utilise pas la couche Cygwin, et j'ai réussi à exécuter git très bien dans sa version Windows MsysGit.

60
répondu VonC 2017-05-23 11:54:34

Oui. Vieille question. Nouvelle réponse:

nous utilisons MSYSgit depuis environ 2 ans dans un déploiement de grande envergure. La vitesse de transfert d'un serveur de dépôt git local a été limitée à moins de 5 MiB/s. Une enquête antérieure sur la question a révélé que le problème était lié au fait que les périphériques MSYS étaient connectés à Windows XP et à Windows 7, ce qui limitait la sécurité à partir de l'interpréteur de commandes et de l'interpréteur de commandes bash. Cela ne semble pas être, en fait, le problème.

J'ai découvert sur le blog de Darrell Mozingo et testé un clone d'une grande (plusieurs GiB) repo en utilisant seulement une installation Cygwin. Les vitesses de transfert étaient de l'ordre de 30 MiB/S. Le problème est que MSYSgit utilise un ancien binaire OpenSSH de 2007.

à cette fin, jusqu'à ce que cela soit corrigé, je recommande maintenant un déplacement vers Cygwin (même si la version de git est un peu en retard). J'ai aussi trouvé Cygwin plus stable et moins susceptible pour perl de manquer de mémoire.

15
répondu incrementor 2012-02-11 04:35:56

j'ai utilisé les versions MSYS et Cygwin de git, et pour être honnête, je n'ai trouvé aucune expérience particulièrement bonne. Je ne pense pas que git soit encore prêt pour windows.

cela dit, un problème que J'ai trouvé avec la version MSYS est qu'elle convertirait les fins de ligne sur vos fichiers (non binaires) du style UNIX (line-feed) au style DOS (carriage-return/line-feed). Vous pouvez considérer ce un bug ou une fonctionnalité, mais il n'y a aucun moyen de changer le comportement que j'ai pu trouver. (Modifier: définir la variable de configuration core.autocrlf à false . Merci Brian.)

OTOH, la version MSYS de git a quelques fonctionnalités GUI qui ne sont pas disponibles dans la version cygwin à moins que vous ne vouliez installer et exécuter un serveur X entier. (Merci Joce d'avoir confirmé cela.)

mon impression est que la version MSYS est plus populaire, bien que ce soit peut-être parce que vous n'avez pas besoin d'installer un écosystème cygwin utiliser. (Et je suis d'accord, cygwin est extrêmement utile.)

personnellement, je dirais Bazaar ou Mercurial , l'un ou l'autre qui ont un meilleur support pour windows IMO.

9
répondu Evan 2009-04-24 09:21:02

Cygwin et Msys git fonctionnent assez bien pour les cas d'utilisation normale. Si vous voulez utiliser des scripts tels que git-svn, Cygwin est un meilleur pari. En tant que vieux utilisateurs de Windows qui ont finalement sauté sur Linux, je peux certainement dire que Cygwin est une grande aubaine et vaut la peine d'avoir en soi.

le Contexte est important de bien; quels sont les projets? Qui sont-ils utilisés? Etc.

7
répondu Edward Z. Yang 2009-04-24 02:55:33

j'ai aussi testé les deux mondes (CygWin et MSysgit), mon expérience est aussi qu'il y a quelques défauts dans la bash MSysgit. Incapable d'exécuter git stash avec succès alors que Cygwin l'a géré avec élégance sur le même git repo.

pas encore fait d'analyse approfondie...

6
répondu PatrikS 2010-03-18 15:39:09

j'utilise actuellement Msysgit avec TortoiseGit.

le msysgit UI n'est pas vraiment à mon goût donc j'utilise un outil familier comme TortoiseGit et en travaillant sur la ligne de commande (la plupart du temps), j'utilise le binaire git de Msysgit

4
répondu Tigraine 2009-09-12 16:55:29

Je recomenterais msysgit. Surtout s'il est utilisé avec Extensions Git : il fournit un moyen facile de configurer l'environnement: Editeur/diff/outils de fusion, et permet de faire des opérations git avancées à partir de l'interface utilisateur.

3
répondu Konstantin Tenzin 2011-03-05 20:30:15

j'ai rencontré de sérieux bugs dans L'implémentation cygwin de MSys: certaines commandes, en particulier le rebase, étaient très sujettes à l'échec. Cygwin était beaucoup plus stable pour moi.

cela dit, c'était il y a un mois, ça aurait pu s'améliorer depuis.

1
répondu Alex Gontmakher 2009-05-11 21:07:30

j'ai utilisé à la fois Cygwin Git et Msysgit avec Windows. Je suggère D'utiliser Cygwin + Git. Cygwin 1.7 (actuellement en beta) aborde une nuance majeure (au moins pour moi) en utilisant git gui et gitk. Les versions précédentes de Cygwin utilisé pour ouvrir 10s de cmd windows chaque fois que je fais quelque chose dans git-gui ou gitk. Cette question a été abordée au point 1.7. Le shell puissant de Cygwin apporte aussi beaucoup de goodies du terminal linux.

cela dit, Msysgit a évolué un peu et il est vraiment utile dans Windows. J'ai fait face à un couple de questions.

question de Permission: quelques fichiers créés nativement dans windows avaient le mode 755 qui a été converti en 644 tout en utilisant Msysgit. Ceci apparaîtrait sous forme de fichiers modifiés. Une vérification devrait régler ce problème.

CRLF: l'insaisissable CRLF comme d'habitude crée des problèmes dans Windows. Msysgit peut signaler des fichiers modifiés. Ceci peut être corrigé en sélectionnant "laisser les fins de ligne inchangées" ( texte) lors de l'installation de Msysgit.

Démon: Et oui, je suis toujours de trouver qu'il est difficile pour l'installation de git daemon en Msysgit.

1
répondu sankara 2009-11-17 09:50:23

Nouvelle réponse à une ancienne question ...

j'utilise git 1.7.3 à partir d'un shell Windows 7 cmd, et cela fonctionne très bien. J'utilise un mélange de Git command line et git gui, et les deux fonctionnent bien depuis des mois. Nous avons eu des problèmes de retour de chariot/alimentation en ligne, exacerbés lorsque nous avons ajouté des développeurs Mac à l'équipe, mais ceux-ci ont été résolus ...

core.autocrlf=true
core.safecrlf=false

ne pas dire que vous ne devriez pas utiliser un shell *nix-y, juste que ce n'est pas nécessaire.

1
répondu yoyo 2011-04-06 17:41:08

j'ai des réserves sur les CygWin parce que je ne veux git et pas les autres outils Cygwin veut pousser dans. Normalement, vous voulez que votre ordinateur windows fonctionne comme un ordinateur windows et CygWin veut mettre sur quelque chose de complètement différent. Gifler sur la fonctionnalité * nix juste pour les coups de pied n'est pas à faire.

le truc c'est que, si jamais je veux travailler avec *nix comme ligne de commande, j'irais sur ma machine Linux et je travaillerais dessus ordinateur à la place. ordinateurs virtuels et ordinateurs de bureau à distance fonctionne comme un charme de nos jours et est assez accessible pour les développeurs.

il doit vraiment y avoir une raison légitime pour que vous utilisiez CygWin. Si c'est juste pour utiliser git je vous suggérerais d'utiliser MSysGit à la place qui est ma préférence. Il fonctionne très bien avec les outils gitk et git-gui qui sont fournis. J'ai travaillé sur les deux Eclipse et Visual Studio utilisant msysgit et il fonctionne comme un charme.

la seule chose que j'attends pour l'instant est un clone de tortue pour git .

0
répondu Spoike 2009-04-24 06:58:55

il y a un scénario sous Windows où vous avez simplement avec pour utiliser Git via Cygwin: c'est quand vous voulez utiliser Git contre un serveur SVN, qui attend des versions de client SVN supérieures à 1.5. Il existe des hooks SVN pre-commit qui bloquent les propagations lorsqu'il n'y a pas d'argument 'mergeinfo' - et L'argument 'mergeinfo' n'est par défaut dans SVN que depuis la version 1.5. le problème avec msysGit est qu'il est construit avec une version SVN plus ancienne (1.4.6), donc vous on ne peut pas s'engager avec succès dans ce cas. mais C'est possible avec le Git de Cygwin, car il est construit avec des versions SVN plus récentes.

0
répondu ufo 2012-06-01 08:15:45

si vous voulez juste faire des actions simples comme push/pull/branching vous pouvez essayer SourceTree de Atlasian. Une interface utilisateur très simple et claire pour la commande Git. Toutefois, il a manches à venir.

si vous avez besoin d'utiliser l'outil Git en ligne de commande, obtenez simplement l'outil Git for windows. Cela devrait suffire, à moins que vous ne commenciez à chercher dans les scripts bash.

0
répondu thoroc 2015-03-19 12:13:37