Czy opcja „Użyj Gita i opcjonalnych narzędzi uniksowych z wiersza polecenia systemu Windows” jest niebezpieczna?

12

Podczas instalacji Git oferuje opcję dodania wszystkich swoich narzędzi msys * nix do PATH, jednak ostrzega:

Ostrzeżenie: zastąpi to narzędzia Windows, takie jak „znajdź” i „sortuj”. Użyj tej opcji tylko wtedy, gdy rozumiesz implikacje.

Moje pytania to:

  • Z jakimi narzędziami będzie w konflikcie?
  • Czy to ma znaczenie? Czy są one powszechnie używane przez system? (Nigdy nie korzystałem z nich osobiście.)
  • Czy mogę po prostu zmienić kolejność katalogów w PATH, aby zapobiec konfliktom?
  • Czy to właśnie robi druga opcja? („Użyj Gita z wiersza polecenia systemu Windows - ta opcja jest uważana za bezpieczną, ponieważ dodaje tylko niektóre minimalne opakowania Git”)
Aleksandr Dubinsky
źródło

Odpowiedzi:

5

Zgadzam się z ogólną analizą pozostałych odpowiedzi i nie jestem również w stanie przewidzieć, jakiego rodzaju konflikty możesz spotkać. Wiem, że nie zauważyłem niczego złego, gdy wybrałem trzecią opcję. Ale mogę dodać trochę do tego, co faktycznie robią opcje od 2018 roku.

Eksperymentowałem z różnymi konfiguracjami instalacji, decydując, jak zasugerować mojemu zespołowi przejście na git, w tym te opcje. Tak właśnie obserwowałem instalację na mojej ścieżce, od git dla Windows v2.19.1.

zrzut ekranu opcji instalacji Git dla Windows do ustawiania ŚCIEŻKI

Używaj Git tylko z Git Bash

Jak stwierdzono, ścieżka nie jest modyfikowana. Wprowadzenie prostej git statusw wierszu polecenia systemu Windows, cmd.exe, zakończy się niepowodzeniem 'git' is not recognized as an internal or external command, operable program or batch file.

Użyj Git z wiersza polecenia systemu Windows

Czy mogę po prostu zmienić kolejność katalogów w PATH, aby zapobiec konfliktom?

Czy to właśnie robi druga opcja? („Użyj Gita z wiersza polecenia systemu Windows - ta opcja jest uważana za bezpieczną, ponieważ dodaje tylko niektóre minimalne opakowania Git”)

Zmiana kolejności jest zawsze dla ciebie opcją, ale nie, drugi wybór wydaje się nie mieć nic wspólnego z zamawianiem. (Wydaje się, że dodawanie ścieżek dochodzi do końca ścieżki niezależnie. Jestem trochę podejrzany, że w pewnym momencie to się zmieniło.) Jest to pytanie, które katalogi są dodawane do ścieżki i różnią się między drugą a trzecią opcją.

Kiedy powie, że doda „minimalną” owijkę Gita do ŚCIEŻKI, wydaje się, że faktycznie robi to, dodając cmdfolder ścieżki (nadchodzącej) instalacji. Jest to opcja, którą ostatecznie zasugerowałem mojemu zespołowi. Teraz mamy C:\Program Files\Git\cmdnasze ścieżki.

Co jest w cmdkatalogu? Dla mnie tylko sześć plików:

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

Podobnie jak w przypadku odpowiedzi Anaksunamana, nie jestem pewien, kiedy to nie wystarczy. Każde normalne polecenie zaczynające się od git <some command>będzie działało od włączenia git.exe.

Użyj Git i opcjonalnych narzędzi uniksowych z wiersza polecenia systemu Windows

Obejmuje to dodanie drugiej opcji <Install dir>\Git\cmddo ścieżki, a także dodaje <Install dir>\Git\mingw64\bini <Install dir>\Git\usr\bindo ścieżki. Oba katalogi mają znaczną liczbę plików wykonywalnych, w tym znajdź, sortuj i zabijaj, jak wspomniano w innych odpowiedziach.

Zamiast wymieniać prawdopodobnie kilkaset pozycji, zachęcam zainteresowanego użytkownika do skorzystania z opcji drugiej, ukończenia instalacji i przejrzenia tych katalogów. Jeśli jesteś zadowolony z ryzyka, samodzielne dodanie <Install dir>\Git\mingw64\bini <Install dir>\Git\usr\binna swoją ścieżkę byłoby równoznaczne z cofnięciem wehikułu czasu i wybraniem trzeciej opcji.

ojchase
źródło
Ponieważ założenia i konteksty zmieniają się na przestrzeni lat, przydatne może być rozpoczęcie nowej odpowiedzi na czteroletnie pytanie z „Oto nowa perspektywa od 2019 roku ...”
Christopher Hostage
1
To wciąż najbardziej przydatne pytanie na ten temat, więc myślę, że istotne jest otrzymywanie dodatkowych odpowiedzi. Dodałem rok, choć pomyślałem, że numer wersji spełniłby ten sam cel.
ojchase
7

Z jakimi narzędziami będzie w konflikcie?

Osobiście nie jestem pewien pełnej listy, ale to pytanie StackOverflow mówi

„Obejmuje to wyszukiwanie, zabijanie i sortowanie [...] Problem z pierwszymi 3 (i podobnymi) polega na tym, że istnieją one w obu systemach operacyjnych i działają inaczej w każdym z nich.”

Mogą nie być często używane przez ciebie, ale są na tyle powszechne, że Git odczuwa potrzebę ostrzeżenia cię przed nieoczekiwanym zachowaniem.

Anegdotycznie częściej pojawiają się w programach stron trzecich (głównie skryptach), więc poziom efektu najprawdopodobniej zależy od tego, jak często korzystasz z programów, które opierają się na którymkolwiek z tych poleceń.

Czy to właśnie robi druga opcja? („Użyj Gita z wiersza polecenia systemu Windows - ta opcja jest uważana za bezpieczną, ponieważ dodaje tylko niektóre minimalne opakowania Git”)

Zasadniczo pozwala on używać Gita z wiersza poleceń (cmd.exe) ze wszystkimi popularnymi poleceniami Git. Ta opcja jest całkowicie bezpieczna i przydatna dla 99% tego, co prawdopodobnie chciałbyś napisać lub ręcznie wdrożyć z linii poleceń Windows. Korzystam z tej opcji i nigdy osobiście nie spotkałem żadnych problemów.

Po zainstalowaniu możesz również przyjrzeć się graficznemu interfejsowi git (np. GitHub Dekstop dla Windows lub SourceTree ) i nie zapominaj, że Git bash jest również dostarczany z instalacją.

Anaksunaman
źródło
Właściwie chciałbym użyć niektórych narzędzi CMD i zastanawiałem się, czy druga opcja udostępnia którekolwiek z narzędzi uniksowych, czy tylko git.
Aleksandr Dubinsky
O ile mi wiadomo, to tylko git.
Anaksunaman
3

Z jakimi narzędziami będzie w konflikcie?

Pozwoliłbym, aby instalacja zmodyfikowała twoją ŚCIEŻKĘ. Łatwo jest usunąć go ze ŚCIEŻKI, jeśli go nie chcesz. Potem patrzyłem na katalogi i robiłem porównania, takie jak diff, comm itp., Aby znaleźć konflikty. Powinny być gdzieś udokumentowane, choć nie wiem gdzie.

Czy to ma znaczenie? Czy są one powszechnie używane przez system? (Nigdy nie korzystałem z nich osobiście.)

Ostatnio nie korzystałem z narzędzi cygwin, ale kiedy musiałem korzystać z systemu Windows, zwykle miałem katalog narzędzi cygwin w mojej PATH bez problemów.

Największe ryzyko występowałoby, gdyby program szukał kolidujących narzędzi wiersza poleceń systemu Windows, uruchamiałby niewłaściwy program. Myślę, że szanse na to są bardzo niewielkie, biorąc pod uwagę bardzo małą ilość skryptów cmd.exe, które się trwają.

Czy mogę po prostu zmienić kolejność katalogów w PATH, aby zapobiec konfliktom?

Tak. Po prostu przenieś cygwina lub cokolwiek innego git, na koniec ŚCIEŻKI. Pamiętaj tylko, że niektóre sekwencje poleceń nie będą działać poprawnie w cygwin. Pomyśl o tym, myślę, że konsola cygwin poprawnie ustawia ścieżkę. Ustawienie własnej ścieżki podczas korzystania z cygwin sprawiłoby, że cygwin również działałby poprawnie.

Czy to właśnie robi druga opcja? („Użyj Gita z wiersza polecenia systemu Windows - ta opcja jest uważana za bezpieczną, ponieważ dodaje tylko niektóre minimalne opakowania Git”)

Brzmi tak, jakby to wstawiło do PATH katalog zawierający tylko polecenia git, których potrzebujesz do użycia git.

RobertL
źródło
W rzeczywistości git używa MSYS zamiast Cygwin. Różnica polega na tym, że msys to natywny program win32, natomiast cygwin używa biblioteki emulacji do dostosowania kodu posix.
Aleksandr Dubinsky