Ist die Option "Git und optionale Unix-Tools über die Windows-Eingabeaufforderung verwenden" gefährlich?

11

Bei der Installation von Git bietet es die Möglichkeit, alle msys * nix-Tools zu Ihrem PATH hinzuzufügen. Es wird jedoch gewarnt:

Warnung: Dadurch werden Windows-Tools wie "Suchen" und "Sortieren" überschrieben. Verwenden Sie diese Option nur, wenn Sie die Auswirkungen verstehen.

Meine Fragen sind:

  • Mit welchen Tools wird es genau in Konflikt stehen?
  • Ist das wichtig? Werden sie üblicherweise vom System verwendet? (Ich habe sie nie persönlich benutzt.)
  • Kann ich einfach die Reihenfolge der Verzeichnisse im PATH ändern, um Konflikte zu vermeiden?
  • Ist es das, was die 2. Option tut? ("Git über die Windows-Eingabeaufforderung verwenden - Diese Option wird als sicher angesehen, da nur einige minimale Git-Wrapper hinzugefügt werden.")
Aleksandr Dubinsky
quelle

Antworten:

4

Ich stimme der allgemeinen Analyse der anderen Antworten zu und kann auch nicht genau vorhersagen, auf welche Art von Konflikten Sie stoßen könnten. Ich weiß, dass ich selbst nichts Falsches bemerkt habe, als ich die dritte Option gewählt habe. Aber ich kann ein wenig dazu beitragen, was die Optionen ab 2018 tatsächlich tun.

Ich habe mit einer Vielzahl von Installationskonfigurationen experimentiert und dabei entschieden, wie ich meinem Team den Übergang zu Git vorschlagen soll, einschließlich dieser Optionen. Dies ist, was ich tatsächlich beobachtet habe, wie die Installation auf meinem Pfad ab Git für Windows v2.19.1 ausgeführt wurde.

Screenshot der Installationsoptionen für Git For Windows zum Festlegen des Pfads

Verwenden Sie nur Git von Git Bash

Wie bereits erwähnt, werden keine Änderungen am Pfad Ihres Systems vorgenommen. Die Eingabe eines einfachen git statusBefehls cmd.exe an der Windows-Eingabeaufforderung schlägt fehl 'git' is not recognized as an internal or external command, operable program or batch file.

Verwenden Sie Git über die Windows-Eingabeaufforderung

Kann ich einfach die Reihenfolge der Verzeichnisse im PATH ändern, um Konflikte zu vermeiden?

Ist es das, was die 2. Option tut? ("Git über die Windows-Eingabeaufforderung verwenden - Diese Option wird als sicher angesehen, da nur einige minimale Git-Wrapper hinzugefügt werden.")

Das Ändern der Reihenfolge ist immer eine Option für Sie, aber nein, die zweite Option scheint nichts mit der Bestellung zu tun zu haben. (Pfadzusätze scheinen trotzdem bis zum Ende des Pfades zu gehen. Ich bin ein wenig misstrauisch, dass sich dies irgendwann geändert hat.) Es ist eine Frage, welche Verzeichnisse dem Pfad hinzugefügt werden, und unterscheidet sich zwischen der zweiten und dritten Option.

Wenn es heißt, dass Ihrem PATH "minimale" Git-Wrapper hinzugefügt werden, scheint es tatsächlich den cmdOrdner der (kommenden) Installation zum Pfad hinzuzufügen . Dies ist die Option, die ich meinem Team schließlich vorgeschlagen habe. Wir haben jetzt C:\Program Files\Git\cmdauf unseren Wegen.

Was ist im cmdVerzeichnis? Für mich nur sechs Dateien:

  • git.exe
  • git-gui.exe
  • gitk.exe
  • git-lfs.exe
  • start-ssh-agent.cmd
  • start-ssh-pageant.cmd

Wie bei Anaksunamans Antwort bin ich mir nicht sicher, wann dies nicht ausreichen würde. Jeder der normalen Befehle, die mit beginnen git <some command>, funktioniert ab der Aufnahme von git.exe.

Verwenden Sie Git und optionale Unix-Tools über die Windows-Eingabeaufforderung

Dies umfasst das Hinzufügen der zweiten Option <Install dir>\Git\cmdzum Pfad sowie das Hinzufügen <Install dir>\Git\mingw64\binund <Install dir>\Git\usr\binzum Pfad. Beide Verzeichnisse verfügen über eine erhebliche Anzahl ausführbarer Dateien, einschließlich Suchen, Sortieren und Beenden, wie in anderen Antworten erwähnt.

Anstatt die wahrscheinlich ein paar hundert Elemente aufzulisten, würde ich den betroffenen Benutzer ermutigen, Option zwei zu wählen, die Installation abzuschließen und sich diese Verzeichnisse anzusehen. Wenn Sie mit dem Risiko zufrieden sind, entspricht das Hinzufügen <Install dir>\Git\mingw64\binund Hinzufügen <Install dir>\Git\usr\binIhres Pfades dem Zurücknehmen einer Zeitmaschine und der Auswahl der dritten Option.

ojchase
quelle
Da sich Annahmen und Kontexte im Laufe der Jahre ändern, kann es nützlich sein, eine neue Antwort auf eine vier Jahre alte Frage mit "Hier ist eine neue Perspektive ab 2019 ..." zu beginnen
Christopher Hostage
1
Dies ist immer noch die nützlichste Frage zu diesem Thema, daher halte ich es für relevant, zusätzliche Antworten zu erhalten. Ich habe ein Jahr hinzugefügt, obwohl ich gedacht hätte, dass die Versionsnummer den gleichen Zweck erfüllt hätte.
Ojchase
7

Mit welchen Tools wird es genau in Konflikt stehen?

Persönlich bin ich mir einer vollständigen Liste nicht sicher, aber diese StackOverflow-Frage sagt

"Dies beinhaltet das Finden, Töten und Sortieren [...]. Das Problem mit den ersten 3 (und ähnlichen) ist, dass sie in beiden Betriebssystemen existieren und in jedem unterschiedlich funktionieren."

Sie werden möglicherweise nicht oft von Ihnen verwendet, sind jedoch häufig genug, dass Git Sie vor unerwartetem Verhalten warnen muss.

Anekdotisch ist, dass sie eher in Programmen von Drittanbietern (meistens Skripten) erscheinen, sodass der Grad der Wirkung höchstwahrscheinlich davon abhängt, wie oft Sie Programme verwenden, die auf einem dieser Befehle basieren.

Ist es das, was die 2. Option tut? ("Git über die Windows-Eingabeaufforderung verwenden - Diese Option wird als sicher angesehen, da nur einige minimale Git-Wrapper hinzugefügt werden.")

Grundsätzlich können Sie Git über die Befehlszeile (cmd.exe) mit allen gängigen Git-Befehlen verwenden. Diese Option ist absolut sicher und nützlich für 99% dessen, was Sie wahrscheinlich über eine Windows-Befehlszeile skripten oder manuell implementieren möchten. Ich benutze diese Option und bin nie persönlich auf Probleme gestoßen.

Nach der Installation möchten Sie möglicherweise auch eine grafische Git-Oberfläche (wie GitHub Dekstop für Windows oder SourceTree ) anzeigen und nicht vergessen, dass Git Bash auch mit der Installation geliefert wird .

Anaksunaman
quelle
Eigentlich möchte ich einige der Tools von CMD verwenden und mich fragen, ob die zweite Option eines der Unix-Tools verfügbar macht oder nur Git.
Aleksandr Dubinsky
Meines Wissens ist es nur Schwachkopf.
Anaksunaman
3

Mit welchen Tools wird es genau in Konflikt stehen?

Ich würde die Installation Ihren Pfad ändern lassen. Es ist einfach, es aus dem Pfad zu entfernen, wenn Sie es nicht möchten. Dann würde ich mir die Verzeichnisse ansehen und einige Vergleiche wie diff, comm usw. anstellen, um die Konflikte herauszufinden. Sie sollten irgendwo dokumentiert werden, obwohl ich nicht weiß, wo.

Ist das wichtig? Werden sie üblicherweise vom System verwendet? (Ich habe sie nie persönlich benutzt.)

Ich habe die Cygwin-Tools in letzter Zeit nicht verwendet, aber als ich Windows verwenden musste, hatte ich normalerweise das Cygwin-Tools-Verzeichnis ohne Probleme zuerst in meinem PATH.

Das größte Risiko besteht darin, dass ein Programm, wenn es nach den widersprüchlichen Windows-Befehlszeilentools sucht, das falsche Programm ausführt. Ich denke, die Chancen dafür sind sehr gering, wenn man bedenkt, dass extrem wenig cmd.exe-Skripte erstellt werden.

Kann ich einfach die Reihenfolge der Verzeichnisse im PATH ändern, um Konflikte zu vermeiden?

Ja. Bewegen Sie einfach den Cygwin oder was auch immer githinzufügt, an das Ende des Pfads. Denken Sie daran, dass bestimmte Befehlssequenzen in Cygwin nicht richtig funktionieren. Denken Sie auch daran, ich denke, die Cygwin-Konsole richtet den Pfad korrekt ein. Wenn Sie Ihren eigenen Pfad einrichten, wenn Sie Cygwin verwenden, funktioniert Cygwin dann auch ordnungsgemäß.

Ist es das, was die 2. Option tut? ("Git über die Windows-Eingabeaufforderung verwenden - Diese Option wird als sicher angesehen, da nur einige minimale Git-Wrapper hinzugefügt werden.")

Es hört sich so an, als würde dies ein Verzeichnis in den PATH einfügen, das nur die git-Befehle enthält, die Sie zur Verwendung von git benötigen.

RobertL
quelle
Tatsächlich verwendet git MSYS anstelle von Cygwin. Der Unterschied besteht darin, dass msys nativ win32 ist, während cygwin eine Emulationsbibliothek verwendet, um Posix-Code anzupassen.
Aleksandr Dubinsky