wake-up-neo.com

Git unter Windows: MSYS oder Cygwin?

Ich plane, meine Projekte auf git zu migrieren, und ich frage mich derzeit, welche die beste und/oder stabilste Option unter Windows ist.

Von dem, was ich erfahre, habe ich grundsätzlich 2,5 Optionen:

  1. MSYSgit
  2. git unter Cygwin
  3. (aka 2.5) MSYSgit aus einer Cygwin-Eingabeaufforderung (vorausgesetzt, dass Cygwin git bereits installiert ist).

Hinweis: IMO Cygwin ist an sich ein großer Vorteil, da Sie auf so ziemlich alle * nix-Befehlszeilentools zugreifen können. Mit MSYSgit bash haben Sie nur Zugriff auf eine recht kleine Teilmenge dieser Tools.

Welche Option würden Sie angesichts dessen vorschlagen?

80
joce

Bearbeiten (2 weitere Jahre später: Oktober 2014)

Johannes Schindelinsoeben erklärt (Okt. 2014) dass msysgit ausläuft:

wir haben jetzt ein light-weight Git für Windows SDK - das ist im Wesentlichen ein Standard-MinGW/MSys-System, das über den Paketmanager mingw-get verwaltet wird. 

Wir haben uns entschieden, den Namen "msysGit" (sowie das GitHub-Org mit dem gleichen Namen ) einfach auszubauen und an Git für Windows (mit dem entsprechende GitHub-Org) } und unter dem Namen "Git für Windows" für das Installationsprogramm für "Endbenutzer" und "Git für Windows-SDK" für die Entwicklungsumgebung für Git für Windows-Entwickler).


Bearbeiten (3 Jahre später: April 2012)

MsysGit (jetzt auf GitHub ) ist der Weg, wenn Sie einen schnellen und schnellen Start in der Git-Welt wünschen: Entpacken Sie das Archiv, starten Sie git-cmd.bat oder git-bash.bat und du bist fertig.
Sein neueste Version (1.7.10, April 2012) enthält jetzt Unterstützung für UTF-8 , auch in GitExtension enthalten . Don ' Vergessen Sie jedoch nicht, Ihre autocrlf auf false zu setzen. 

Wenn Sie wirklich alle anderen Unix-Befehle, die keine Pakete mit msysgit sind, vermissen, laden Sie einfach eine Version von GoW (Gnu unter Windows) herunter, die treffend "Die leichte Alternative zu Cygwin" heißt.
Ich meine: 130 Unix-Befehl s ...

Cygwin sollte nur in bestimmten Fällen eine Sicherungslösung sein, wie die Übertragungsgeschwindigkeit von large Git-Repositorys, wie unten von Inkrementor in seiner Antwort erwähnt.


Juni 2012: Wenn Sie mit GitHub interagieren möchten, haben Sie jetzt HTTP://WINDOWS.GITHUB.COM (siehe auch " Design von GitHub für Windows ").
Es wird nicht nur die ssh-Schlüssel für Sie konfigurieren (und den generierten öffentlichen Schlüssel zu Ihrem GitHub-Profil hinzufügen), sondern es wird auch für alle git-Vorgänge eine ... MsysGit.


Ursprüngliche Antwort (April 2009)

Ich habe kein Problem mit der neuesten Version von MsysGit:
Ich verwende das Option 2 , was bedeutet, dass ich nur das Verzeichnis git\bin zur Umgebungsvariable PATH hinzufüge, ohne dabei einige integrierte Windows-Tools zu überschreiben.

Es ist mir gelungen, externe Tools wie Notepad ++ und WinMerge (oder DiffMerge) zu definieren.

Ich habe erfolgreich Skripts wie svn2git ausgeführt, da in MsysGit 1.6.2 + der Befehl 'git svn' enthalten ist.

Und zum Schluss freue ich mich auf MsysGit1.6.2.3 dafür wird schließlich den 'git filter-branch'-Befehl enthalten ! (eine langsame Version von filter-branch, aber immer noch).

Für den Unix-Befehl möchte ich lieber ein GnuWin32-Coreutils-Paket installieren und nur verwenden, wenn ich sie brauche.

Alles in allem verwende ich die Cygwin-Schicht nicht und konnte Git in seiner Windows-basierten Version MsysGit sehr gut ausführen.

60
VonC

Ja. Alte Frage Neue Antwort:

Wir verwenden MSYSgit bereits seit etwa zwei Jahren in einer umfangreichen Bereitstellung. Die Übertragungsgeschwindigkeit von einem lokalen Git-Repository-Server wurde auf weniger als 5 MiB/s begrenzt. Eine frühere Untersuchung des Problems ergab, dass das Problem darin bestand, dass MSYS-Entwickler unter Windows XP und Windows 7 Verbindungen mit Sicherheitsbeschränkungen über den Befehl Prompt/bash Shell hatten. Dies scheint tatsächlich nicht das Problem zu sein.

Ich entdeckte Darrell Mozingos Blogposting und testete einen Klon eines großen (viele GiB) -Repos nur mit einer Cygwin-Installation. Die Übertragungsgeschwindigkeit lag im Bereich von 30 MiB/s. Das Problem ist, dass MSYSgit eine antike OpenSSH-Binärdatei von 2007 verwendet.

Zu diesem Zweck empfehle ich, bis das Problem behoben ist, eine Umstellung auf Cygwin (obwohl die Version von git etwas hinterherhinkt). Ich fand auch, dass Cygwin stabiler ist und für Perl wahrscheinlich weniger Arbeitsspeicher zur Verfügung steht.

15
incrementor

Ich habe mich sowohl mit der MSYS- als auch der Cygwin-Version von git versucht, und um ehrlich zu sein, fand ich keine der beiden Erfahrungen besonders gut. Ich glaube einfach nicht, dass git wirklich noch einsatzbereit ist.

Ein Problem, das ich bei der MSYS-Version gefunden habe, ist die Konvertierung der Zeilenenden Ihrer (nicht binären) Dateien vom UNIX-Stil (Zeilenvorschub) in den DOS-Stil (Wagenrücklauf/Zeilenvorschub). Sie können dies als Fehler oder Feature betrachten, aber es gibt keine Möglichkeit, das Verhalten zu ändern, das ich finden könnte. (BEARBEITEN: Setzen Sie die Konfigurationsvariable core.autocrlf auf false. Danke Brian.)

OTOH, die MSYS-Version von git, verfügt über einige GUI-Funktionen, die in der cygwin-Version nur verfügbar sind, wenn Sie einen ganzen X-Server installieren und ausführen möchten. (Danke, Joce, dass du das bestätigt hast.)

Mein Eindruck ist, dass die MSYS-Version beliebter ist, auch wenn Sie nicht unbedingt ein Cygwin-Ökosystem installieren müssen, um sie zu verwenden. (Und ich stimme zu, cygwin ist äußerst nützlich.)

Ich persönlich würde entweder mit Bazaar oder Mercurial gehen, von denen beide eine bessere Unterstützung für Windows IMO haben.

9
Evan

Cygwin und Msys Git funktionieren für normale Anwendungsfälle recht gut. Wenn Sie Skripte wie git-svn verwenden möchten, ist Cygwin die bessere Wahl. Als alte Windows-Benutzer, die endlich auf Linux umgestiegen sind, kann ich definitiv sagen, dass Cygwin ein großer Segen ist und es wert ist, an und für sich zu sein.

Der Kontext ist jedoch wichtig. welche projekte sind das? Von wem werden sie benutzt? Usw.

7
Edward Z. Yang

Ich habe auch beide Welten getestet (CygWin und MSysgit). Nach meiner Erfahrung gibt es auch einige Mängel in der MSysgit-Bash. Es konnte kein Git-Stash erfolgreich ausgeführt werden, während Cygwin es mit demselben Git-Repo elegant handhabte.

Noch keine tiefe Analyse gemacht ...

6
PatrikS

Derzeit verwende ich Msysgit zusammen mit TortoiseGit.

Die MsysGit-Benutzeroberfläche gefällt mir nicht wirklich, also benutze ich ein bekanntes Werkzeug wie TortoiseGit und wenn ich an der Kommandozeile arbeite, verwende ich meistens die git-Binärdatei von Msysgit

4
Tigraine

Ich würde Msysgit weiterempfehlen. Insbesondere wenn es mit Git Extensions verwendet wird: Es bietet eine einfache Möglichkeit zum Konfigurieren der Umgebung: Editor/Diff/Merge-Tools und ermöglicht die Ausführung erweiterter Git-Operationen von der Benutzeroberfläche aus.

3

Neue Antwort auf eine alte Frage ...

Ich verwende git 1.7.3 von einer Windows 7-cmd-Shell, und es funktioniert großartig. Ich benutze eine Mischung aus git-Kommandozeile und git-gui, und beide funktionieren seit Monaten einwandfrei. Wir hatten Probleme mit dem Wagenrücklauf/Zeilenvorschub, die durch das Hinzufügen von Mac-Entwicklern zum Team noch verstärkt wurden.

core.autocrlf=true
core.safecrlf=false

Nicht zu sagen, Sie sollten keine * nix-y-Shell verwenden, nur dass es nicht notwendig ist.

1
yoyo

Ich habe ernsthafte Fehler in der cygwin-Implementierung von MSys festgestellt: Einige Befehle, insbesondere die Rebase, waren ziemlich anfällig für Fehler. Cygwins war für mich viel stabiler.

Das heißt, es war vor einem Monat, könnte sich seitdem verbessert haben.

1
Alex Gontmakher

Ich habe Cygwin Git und Msysgit mit Windows verwendet. Ich würde Cygwin + Git vorschlagen. Cygwin 1.7 (derzeit in der Beta-Phase) spricht eine wichtige Nuance (zumindest für mich) an, während er git gui und gitk verwendet. Frühere Versionen von Cygwin öffneten jedes Mal, wenn ich etwas in git-gui oder gitk mache, 10 cm cm-Fenster. Dies wurde in 1.7 angesprochen. Cygwins leistungsstarke Shell bringt auch viele der guten Sachen des Linux Terminals mit.

Das heißt, Msysgit hat sich viel weiterentwickelt und ist in Windows wirklich nützlich. Ich hatte jedoch einige Probleme. 

Berechtigungsproblem: Einige wenige in Windows erstellte Dateien hatten den Modus 755, der bei Verwendung von Msysgit in 644 konvertiert wurde. Dies würde als geänderte Dateien angezeigt. Ein Check-in sollte dieses Problem beheben.

CRLF: Die nur schwer erreichbare CRLF führt zu Problemen in Windows. Msysgit meldet Dateien möglicherweise als geändert. Sie können dieses Problem beheben, indem Sie bei der Installation von Msysgit "Zeilenenden unverändert lassen" (den genauen Text vergessen) auswählen.

Daemon: Und ja, es fällt mir immer noch schwer, Git Daemon in Msysgit einzurichten.

1
sankara

Es gibt ein Szenario unter Windows, in dem Sie einfach have verwenden, um Git über Cygwin zu verwenden: In diesem Fall möchten Sie Git gegen einen SVN-Server verwenden, der SVN-Clientversionen über 1.5 erwartet. Es gibt SVN-Pre-Commit-Hooks, die Commits blockieren, wenn es kein Argument 'mergeinfo' gibt - und das Argument 'mergeinfo' ist in SVN erst seit Version 1.5 voreingestellt. Das Problem mit msysGit ist, dass es mit einer älteren SVN-Version (1.4.6) erstellt wurde, sodass Sie in diesem Fall nicht erfolgreich festschreiben können. Aber es ist mit Cygwins Git möglich, da es gegen neuere SVN-Versionen gebaut wird.

0
ufo

Ich habe Vorbehalte gegenüber CygWin , weil ich nur git will und nicht die anderen Tools, die Cygwin einsetzen möchte. Normalerweise möchten Sie, dass Ihr Windows-Computer wie ein Windows-Computer funktioniert und CygWin etwas völlig anderes schlägt. Die * nix-Funktionalität nur für die Kicks zu schlagen ist nicht zu erwarten.

Die Sache ist, wenn ich jemals mit * nix wie der Befehlszeile arbeiten möchte, gehe ich zu meinem Linux-Rechner und arbeite stattdessen auf diesem Computer. Virtuelle Computer und Remote Desktops arbeiten heutzutage wie ein Zauber und sind für Entwickler ausreichend zugänglich.

Es gibt wirklich einen legitimen Grund, CygWin zu verwenden. Wenn es nur für die Verwendung von git ist, würde ich vorschlagen, dass Sie stattdessen MSysGit verwenden, was meine Präferenz ist. Es funktioniert sehr gut mit den gitk- und git-gui-Tools, die im Paket enthalten sind. Ich habe sowohl an Eclipse als auch an Visual Studio mit msysgit gearbeitet und es funktioniert wie ein Zauber.

Das einzige, worauf ich jetzt warte, ist ein voll funktionierender Tortoise-Klon für Git .

0
Spoike

Wenn Sie nur einfache Aktionen wie Push/Pull/Branch ausführen möchten, können Sie SourceTree von Atlasian ausprobieren. Eine sehr einfache und übersichtliche Benutzeroberfläche für Git. Es hat jedoch ein kurzes Kommen.

Wenn Sie das Befehlszeilen-Git-Werkzeug verwenden müssen, rufen Sie einfach das Git für Windows-Werkzeug auf. Es sollte ausreichen, es sei denn, Sie beginnen mit dem Bash-Scripting.

0
thoroc