web-dev-qa-db-fra.com

Git sous windows: MSYS ou Cygwin?

Je prévois 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 je comprends, j'ai fondamentalement 2.5 options:

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

Remarque: IMO Cygwin est en soi un avantage considérable, car vous pouvez avoir accès à presque tous les outils en ligne de commande * nix. En effet, avec MSYSgit bash, vous n’avez accès qu’à un assez petit sous-ensemble de ces outils.

Dans ce cas, quelle option suggéreriez-vous?

80
joce

Edit (2 ans plus tard: octobre 2014)

Johannes Schindelinvient d'être expliqué (Octobre 2014) que msysgit est progressivement supprimé :

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

Nous avons décidé de supprimer le nom "msysGit" (ainsi que le GitHub org du même nom ) et de travailler sur Git pour Windows (avec le organisation GitHub correspondante) , et utiliser le nom "Git pour Windows" pour le programme d'installation destiné aux "utilisateurs finaux" et "Git pour Windows SDK "pour l’environnement de développement ciblant les développeurs Git pour Windows).


Edit (3 ans plus tard: avril 2012)

MsysGit (maintenant sur GitHub ) est la voie à suivre si vous souhaitez un démarrage rapide et léger dans le monde Git: décompressez l'archive, lancez git-cmd.bat ou - git-bash.bat et vous avez terminé.
Son dernière version (1.7.10, avril 2012) inclut maintenant prise en charge de UTF-8 , également inclus dans GitExtension . N'oubliez pas de définir votre autocrlf sur false .

Si vous manquez vraiment toutes les autres commandes unix, pas les packages avec msysgit, téléchargez simplement une version de GoW (Gnu sous Windows) , portant à juste titre le nom "L'alternative légère à Cygwin".
Je veux dire: 130 commande unix s ...

Cygwin ne devrait être une solution de sauvegarde que dans certains cas, comme la vitesse de transfert de grand référentiels Git, comme indiqué ci-dessous par incrémenteur dans sa réponse .


Juin 2012: si vous voulez interagir avec GitHub , vous avez maintenant http: // windows .github.com (voir aussi " Conception de GitHub pour Windows ").
Non seulement cela configurera les clés ssh pour vous (et ajoutera la clé publique générée à votre profil GitHub), mais il installera également, pour toutes les opérations git, un ... MsysGit.


Réponse originale (avril 2009)

Je n'ai aucun problème avec la dernière version de MsysGit:
J'utilise option 2 , ce qui signifie que je n'ajoute que le répertoire git\bin à la variable d'environnement PATH, mais sans surcharger certains outils intégrés de Windows.

J'ai réussi à définir des outils externes tels que Notepad ++ et WinMerge (ou DiffMerge)

J'ai réussi à exécuter des scripts tels que svn2git car, à partir de MsysGit1.6.2 +, elle inclut la commande '_git svn_'.

Et enfin, j'attends avec impatience MsysGit1.6.2.3 pour lui inclura finalement la commande '_git filter-branch_' ! (une version lente de filter-branch, mais quand même).

Pour la commande Unix, je préfère installer un package coreutils GnuWin32 , 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 à très bien utiliser Git dans sa version basée sur Windows MsysGit.

60
VonC

Oui. Vieille question. Nouvelle réponse:

Nous utilisons MSYSgit depuis environ 2 ans maintenant pour un déploiement de grande envergure. La vitesse des transferts depuis un serveur de référentiel git local a été limitée à moins de 5 Mio/s. Une enquête précédente sur le problème a indiqué que le problème était lié au fait que MSYS devs fonctionnait sous Windows XP et Windows 7, ce qui limitait les connexions de la commande Invite/bash Shell. Cela ne semble pas être, en fait, le problème.

J'ai découvert la publication sur le blog de Darrell Mozingo et testé un clone d'un grand dépôt (beaucoup de GiB) en utilisant uniquement une installation Cygwin. Les vitesses de transfert se situaient dans la gamme des 30 MiB/s. Le problème est que MSYSgit utilise un binaire OpenSSH antique datant de 2007.

À cette fin, jusqu'à ce que cela soit corrigé, je recommande maintenant de passer à Cygwin (même si la version de git est un peu en retard). J'ai également constaté que Cygwin était plus stable et moins susceptible de manquer de mémoire pour Perl.

15
incrementor

J'ai essayé d'utiliser à la fois les versions MSYS et Cygwin de git, et pour être vraiment honnête, je n'ai trouvé aucune de ces deux expériences particulièrement réussies. Je ne pense pas que Git soit vraiment prêt pour Windows.

Cela étant dit, un problème que j'ai rencontré avec la version MSYS est qu'il convertissait les fins de ligne de vos fichiers (non binaires) du style UNIX (saut de ligne) au style DOS (retour chariot/saut de ligne). Vous pouvez considérer cela comme un bogue ou une fonctionnalité, mais il n’ya aucun moyen de changer le comportement que je pourrais trouver. (EDIT: définissez la variable de configuration core.autocrlf sur false. Merci Brian.)

OTOH, la version MSYS de git dispose de fonctionnalités d'interface graphique qui ne sont pas disponibles dans la version cygwin, sauf si vous souhaitez installer et exécuter un serveur X complet. (Merci Joce d'avoir confirmé cela.)

Mon impression est que la version MSYS est plus populaire, même s’il n’est pas nécessaire d’installer un écosystème cygwin pour l’utiliser. (Et je suis d'accord, cygwin est extrêmement utile.)

Personnellement, j'irais avec Bazaar ou Mercurial , qui ont tous deux un meilleur support pour Windows IMO.

9
Evan

Cygwin et Msys Git fonctionnent assez bien pour les cas d'utilisation normaux. Si vous souhaitez utiliser des scripts tels que git-svn, Cygwin est un meilleur choix. En tant qu’ancien utilisateur de Windows qui a finalement choisi Linux, je peux certainement dire que Cygwin est une aubaine intéressante et qu’il vaut la peine de l’avoir.

Le contexte est important cependant; Quels sont ces projets? Qui sont-ils utilisés? Etc.

7
Edward Z. Yang

J'ai également testé les deux mondes (CygWin et MSysgit). D'après mon expérience, il existe quelques lacunes dans la bash MSysgit. Impossible d’exécuter git stash avec succès tandis que Cygwin l’a traité avec élégance sur le même dépôt git.

Aucune analyse approfondie n'a encore été faite, cependant ...

6
PatrikS

J'utilise actuellement Msysgit avec TortoiseGit.

L’interface utilisateur de MsysGit ne me convient pas vraiment, alors j’utilise un outil familier comme TortoiseGit et lorsque je travaille sur la ligne de commande (la plupart du temps), j’utilise le binaire git de Msysgit

4
Tigraine

Je recommanderais msysgit. Surtout s'il est utilisé avec Git Extensions : il fournit un moyen simple de configurer les outils environment: editor/diff/merge, et permet d'effectuer des opérations avancées de git à partir de l'interface utilisateur.

3

Nouvelle réponse à une vieille 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 ligne de commande git et de git gui, et les deux fonctionnent bien depuis des mois. Nous avons eu des problèmes de retour chariot/saut de ligne, aggravés lorsque nous avons ajouté des développeurs Mac à l'équipe, mais ils ont été résolus avec ...

core.autocrlf=true
core.safecrlf=false

Ne dites pas que vous ne devriez pas utiliser un shell * nix-y, mais simplement que ce n'est pas nécessaire.

1
yoyo

J'ai rencontré de sérieux bugs dans l'implémentation de MSys dans cygwin: certaines commandes, notamment la rebase, étaient assez sujettes aux échecs. Cygwin était beaucoup plus stable pour moi.

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

1
Alex Gontmakher

J'ai utilisé à la fois Cygwin Git et Msysgit avec Windows. Je suggérerais d'utiliser Cygwin + Git. Cygwin 1.7 (actuellement en version bêta) corrige une nuance majeure (du moins pour moi) lors de l'utilisation de git gui et de gitk. Les versions précédentes de Cygwin ouvraient 10 fenêtres Windows à chaque fois que je fais quelque chose dans git-gui ou gitk. Ce problème a été traité en 1.7. Le puissant Shell de Cygwin apporte également beaucoup des atouts du terminal linux.

Cela dit, Msysgit a beaucoup évolué et est très utile sous Windows. J'ai cependant rencontré quelques problèmes. 

Problème de permission: quelques fichiers créés de manière native dans Windows avaient le mode 755 qui a été converti en 644 lors de l’utilisation de Msysgit. Cela apparaîtrait comme fichiers modifiés. Un enregistrement devrait résoudre ce problème.

CRLF: Comme d'habitude, le CRLF insaisissable crée des problèmes sous Windows. Msysgit peut signaler des fichiers comme modifiés. Cela peut être corrigé en sélectionnant "Laisser les fins de ligne inchangées" (vous avez oublié le texte exact) lors de l'installation de Msysgit.

Daemon: Et oui, j'ai toujours du mal à installer le démon git dans Msysgit.

1
sankara

Il existe un scénario sous Windows dans lequel vous avez simplement devez utiliser Git via Cygwin: vous souhaitez utiliser Git sur un serveur SVN, qui attend des versions de client SVN supérieures à 1.5. Il existe des crochets de pré-validation SVN qui bloquent les validations en l'absence d'argument 'mergeinfo' - et l'argument 'mergeinfo' est utilisé par défaut dans SVN uniquement depuis la version 1.5. Le problème avec msysGit est qu'il est construit par rapport à une version antérieure de SVN (1.4.6), de sorte que vous ne pouvez pas valider avec succès dans ce cas. Mais cela est possible avec Git de Cygwin, car il est construit à partir de versions SVN plus récentes.

0
ufo

J'ai des réserves vis-à-vis de CygWin parce que je ne veux que Git et aucun des autres outils que Cygwin souhaite installer. Normalement, vous voulez que votre ordinateur Windows fonctionne comme un ordinateur Windows et CygWin veut créer une situation complètement différente. Il ne faut pas se contenter de la fonctionnalité * nix juste pour le plaisir.

Le problème est que si je veux travailler avec * nix comme une ligne de commande, je passerais sur ma machine Linux et travaillerais sur cet ordinateur à la place. Les ordinateurs virtuels et les bureaux distants fonctionnent comme un charme et sont suffisamment accessibles pour les développeurs.

Vous devez vraiment avoir une raison légitime d'utiliser CygWin. Si c'est juste pour utiliser git, je vous conseillerais plutôt d'utiliser MSysGit , ce qui est ma préférence. Cela fonctionne très bien avec les outils fournis avec gitk et git-gui. J'ai travaillé à la fois sur Eclipse et Visual Studio avec msysgit et cela fonctionne à merveille.

La seule chose que j'attends pour l'instant est un clone Tortoise entièrement fonctionnel pour git .

0
Spoike

Si vous voulez juste faire des actions simples comme Push/Pull/branching, vous pouvez essayer SourceTree d'Atlasian. Une interface utilisateur très simple et claire pour la commande Git. Cependant, il est à venir.

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

0
thoroc