Différence entre msysgit et Cygwin + git?
Quelle est la différence entre msysgit et Cygwin + git?
maintenant j'utilise msysgit, mais je n'aime pas le Bash Git (vous ne pouvez pas redimensionner ou copier/coller) donc je pense penser à passer à Cygwin, parce que alors je pourrais utiliser mintty .
9 réponses
Modifier 2018:
depuis ma réponse 2010-2012-2014, en 2015 Git pour Windows utilise msys2, comme je détail ici .
pour en savoir plus " comment msys, msys2 et msysgit sont-ils reliés entre eux? ".
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é de simplement supprimer le nom "msysGit" (ainsi que le GitHub org du même nom ) et:
- travaux sur Git for Windows "1519240920 (avec la GitHub org correspondante) ,
- utilisant le nom " Git for Windows "pour l'installateur destiné aux "utilisateurs finaux" et
- en utilisant le nom de " Git pour Windows SDK " pour l'environnement de développement ciblant Git pour les développeurs Windows).
mise à jour 2 ans plus tard: juillet 2012
Msysgit est ici pour rester , et à moins que vous besoin à ajouter quelques centaines de MO pour cygwin , vous n'avez vraiment pas besoin de Cygwin pour juste utiliser Git sur Windows.
Et si vous voulez accéder à GitHub, vous obtenez un paquet ("Git for Windows" + clés ssh enregistrées pour vous sur votre compte GitHub + une interface graphique agréable) avec GitHub for windows .
les deux Git et msysgit sont sur GitHub.
Le msysgit.github.com page illustre clairement la différence entre:
<---------->
" Git pour Windows ": Pure utilisateurs de Git | " MsysGit ": pour Testeurs, les développeurs, custom installer mainteneur
Voir aussi the msysgit FAQ :
Qu'est-ce que C'est que" MSys "dans"MSysGit"?
MSys est un environnement pour Windows offrant un shell de type Unix et un interpréteur Perl. Étant donné que de nombreuses parties de Git ne sont pas encore programmées en C, mais plutôt dans les scripts shell et Perl, Git for Windows a besoin d'un tel environnement.
par conséquent, nous livrons Git pour Windows avec une version très minimale de MSys.
MSys est également nécessaire pour construire Git, car nous réutilisons les mêmes utilisations de la configuration de type Unix en amont de git. Nous expédions un environnement MSys plus complet, y compris GCC, comme environnement de construction (qui est donc surnommé "msysGit").
nous compilons git comme un programme pur MinGW , cependant, c.-à-d. un programme sans aucune dépendance de lien sur quoi que ce soit d'autre que bibliothèques Windows standard.
Ainsi, à moins que vous ayez besoin d'utiliser des parties de Git qui ne sont encore implémentées qu'en tant que scripts shell ou Perl, vous pouvez vous en sortir en exécutant simplement git.EXE.
réponse originale: juin 2010
a/ vous pouvez redimensionner et copier-coller dans Git bash, comme dans tout autre Shell Windows.
b / vous utilisez probablement "Git for windows", et non msysgit. De le wiki :
- msysGit est l'environnement de développement pour compiler Git pour Windows . Il est complet, dans le sens où vous avez juste besoin d'installer msysGit, et puis vous pouvez construire Git. Sans installer de logiciel tiers.
- Git for Windows est un installateur qui installe Git -- et seulement Git .
Il est facile de voir la différence:
- les installateurs de Git ont le préfixe Git -,
- les installateurs msysGit ont le préfixe msysGit-.
un autre exemple est que les installateurs msysGit sont disponibles en deux saveurs: fullinstall et netinstall.
De plus, msysGit ne s'installe pas surC:\Program Files
par défaut.
Mais msysGit fourni avecgcc
, le compilateur GNU C.
C / de MSysGitHerald10 :
Rappelez-vous:
- MinGW est vraiment une couche de compilation très mince sur le Microsoft Runtime; les programmes MinGW sont donc de vrais programmes Windows, sans concept de chemins de style Unix ou de subtilités POSIX comme un appel
fork()
.- MSys, in contrast, est une version allégée de Cygwin (une ancienne version), dont le seul but est de fournir suffisamment D'une couche POSIX pour exécuter une bash.
et c'est-à-dire pas toujours bien accueilli :
en travaillant sur Windows, je n'aime pas que msysGit, comme son nom l'indique, dépende de MSYS et d'outils du monde Unix. Je crois que tous les programmes de la distribution Git devraient devenir les binaires compilés pour une plate-forme spécifique, et ne dépendent pas d'interprètes shell ou de langues tierces comme Tcl/Tk.
même si, il est beaucoup mieux que le premier Git sur Cygwin installations à partir de 2007.
cygwin + git était le seul moyen de faire fonctionner git à l'époque. Maintenant que msysgit est là, Je ne vois aucune raison d'utiliser cygwin.
je suis d'accord que git bash n'est pas si bon.. donc ce que je fais c'est
- mettez git dans le chemin et utilisez l'invite de commande de fenêtre quand j'ai besoin de la ligne de commande
- avoir tortoise git installé pour quand je veux avoir une GUI à mon git
C'est une réponse de 2017...
la différence technique fondamentale est que tous les programmes cygwin dépendent du cygwin1.dll; mais c'est en même temps la moins intéressante pour l'utilisateur final, car il doit être presque complètement transparent. Les principales différences que j'ai trouvées ne sont pas tant entre les versions git qu'entre l'environnement cygwin et l'environnement msys/mingw. Ce sont quelques différences que j'ai trouvé:
- ACL manutention. La façon dont les nouveaux cygwins (post-2015) gèrent les listes de contrôle D'accès NTFS peut être gênante au point d'être dangereuse. Par défaut, les lecteurs Windows sont montés avec l'option acl active. Cygwin essaie d'imiter les permissions POSIX en mélangeant de nouveau et en abusant les entrées ACL d'une manière qui peut rendre l'accès impossible à travers les programmes Windows natifs. De plus, il est possible que l'accès aux fichiers soit considérablement ralenti dans les installations multi-domaines (c.-à-d. commerciales ou institutionnelles) à utilisateurs multiples. en raison de l'accès au réseau, parce que la détermination des utilisateurs et des permissions nécessite potentiellement des requêtes de serveur de domaine pour chaque fichier.
msys s'installe avec l'option-noacl
par défaut. Faire cela aussi à cygwin semble éviter ces problèmes. - de la Vitesse. Je travaille actuellement dans un dépôt avec des fichiers De 100k (ne pas demander). Un
git status
avec tous les contenus pertinents du disque dans le cache prend 4,7 secondes avec cygwin et 0,4 secondes avec msys git. Je ne sais pas quelle partie de la couche de compatibilité cygwin ralentit les choses -- serrures, fourchettes, système de fichiers, IPC... ils sont tous les candidats. - potentiellement noms de fichiers. Je n'ai pas enquêté sur la question, mais je soupçonne qu'un git (et les autres outils) ciblé pour windows (comme msys git) peut mieux gérer les noms de fichiers windows. Sous cygwin on doit convertir avec diligence les noms de fichiers via
cygpath
entre les deux mondes. Qui va jouer un rôle important lorsque les scripts etc. interface avec les programmes Windows.
Edit: c'est peut-être pas évident qu'avec quelques modifications mineures, il est possible de partager des paramètres communs pour git (mais pas seulement pour git) entre cygwin et Msys2. Si je me souviens correctement, une bonne façon est de définir la variable D'environnement de la maison dans les paramètres du système de Windows; puis Msys2 et cygwin utiliseront ce répertoire et donc les mêmes fichiers de points, parmi eux ~/.gitignore
. Qui facilite le changement de entre les terminaux cygwin et Msys2 assez indolore (penser ~/.inputrc
, ~/.bashrc
, ~/.profile
...).
MSysGit est livré avec une très vieille version de SSH. Le débit sur mon système était d'environ 10 mbit. Si vous ne vous souciez pas de la vitesse des clones, alors cela ne vous affecte pas. Le correctif est D'exécuter Cygwin Git ou remplacer le SSH installé dans MSysGit .
l'implémentation de bash dans msysgit est ancienne. Cependant, j'utilise vim lors de l'édition et qui fonctionne très bien. En ce qui concerne la découpe et le collage, j'ai souvent recours à SHIFT+ALT+[space], E, M ou peu importe ce que sont les touches pour obtenir le texte de marque que je veux. Pas idéal, mais fait le travail assez bien que je ne coupe pas et coller trop.
J'ai maintenant commencé à lancer Ubuntu sur la même machine via VirtualBox. Avec le mode transparent et les dossiers partagés, je peux profiter d'un bash à jour et rapide Git.
Je n'utilise aucun outil gui pour Git sauf gitk (pour gitk --all) pour visualiser l'histoire si j'en ai besoin.
j'ai essayé cygwin et je n'ai pas aimé. La solution de boîte virtuelle est beaucoup mieux si msysgit n'est pas assez pour vous.
la version actuelle de Git sur cygwin est 1.7.5.1, ce qui est très, très actuel (mai 2011).
Je ne vois aucune raison (jusqu'à présent) d'utiliser autre chose, bien que j'envisage de donner msysgit (alias" Git for Windows") un essai (actuellement version 1.7.4).
Msysgit a reçu un certain nombre de correctifs pour traiter des problèmes spécifiques à Windows tels que l'insensibilité du système de fichiers, le verrouillage des fichiers, etc. C'est probablement une mauvaise idée d'utiliser la version cygwin. Si vous avez cygwin sur votre système, je vous conseille de ne pas installer git du tout, et de préférence de ne pas partager les environnements msysgit ou cygwin à partir du même chemin.
cygwin voit vos fichiers locaux dans le format de windows, tandis que git-bash les voit dans le format unix. Si vous vérifiez les fichiers dans git-bash puis exécutez le statut git sur un shell cygwin, git pense que vous avez modifié chaque ligne dans le repo, si vous exécutez le statut git dans le shell git-bash, alors seuls les fichiers que vous avez touchés sont modifiés.
C'est une réponse de 2018...
Git for Windows est basé sur MSYS2 .
MSYS2 a été lancé avec l'idée de redémarrer le projet MSys, en mettant fréquemment à jour avec Cygwin et en gardant juste L'esprit de MSys pour fournir une couche POSIX très dépouillée, essentiellement une version de Cygwin. MSYS2 dispose également d'un gestionnaire de paquets (pacman) et conserve ces paquets up-to-date très bien.
..
le runtime de MSYS2 est un runtime Cygwin démonté, légèrement modifié, tournant sur le noyau Windows, alors que le runtime de Linux est le noyau Linux, tournant en OS séparé.
https://github.com/git-for-windows/git/wiki
Cygwin fournit une bibliothèque runtime appelée cygwin1.dll qui fournit la couche de compatibilité POSIX si nécessaire. La variante MSYS2 de cette bibliothèque est appelée msys-2.0.dll et comprend les changements suivants pour soutenir l'utilisation de programmes Windows natifs: en quoi MSYS2 diffère-t-il de Cygwin