git.cmd
nie istnieje już w aktualnych wersjach programu msysgit (np. 1.8.0). git.cmd
to opakowanie, które zostało zastąpione nowym opakowaniem o nazwie git.exe
. Nie należy mylić tego z rzeczywistym git.exe
.
Jeśli przyjrzeć katalogu Git w %ProgramFiles(x86)%
lub %ProgramFiles%
, zobaczysz następującą strukturę:
Git
|-- bin
| |-- git.exe
|-- cmd
|-- git.exe
Owijka istnieje w msysGit przez długi czas, aby odpowiednio skonfigurować środowisko do używania git z cmd.exe. Jeśli używasz dołączonej powłoki bash, uruchomi ona bezpośrednio git.exe.
Możesz porównać starą wersję cmd z nowym wykonywalnego owijki tutaj:
- git.cmd
- git.exe wrapper
Tak naprawdę nie trzeba się martwić o każdy z tej magii, po prostu zrozum, że powinieneś wywołać opakowanie z dowolnego miejsca, ale nie z środowiska bash msysgit.Kiedy dodajesz git do ścieżki w instalatorze, jest dodawany katalog Git \ cmd. Nie polecam dodawania wszystkich dołączonych narzędzi do twojej ścieżki systemowej, ponieważ może to powodować wiele problemów, szczególnie jeśli masz inne instalacje msys lub cygwin. Nigdy nie próbowałem go wypróbować w niedawnej pamięci, ale wyobrażam sobie, że umieszcza on zarówno katalogi cmd
i bin
na twojej ścieżce, z priorytetem cmd
.
Dla mnie jest jedna wielka zaleta nowego opakowania git.exe: sprawia, że kod wywołujący git jest bardziej przenośny. Poprzednio, jeśli napisałem skrypt w języku Pythona, który nazywa się git, musiałbym wykonać komendę w środowisku powłoki (subprocess.Popen()
z shell=True
) lub jawnie uruchomić plik cmd. Teraz mogę po prostu wykonać proces z "git" jako nazwą, niezależnie od systemu operacyjnego. Dzieje się tak, ponieważ CreateProcess() w systemie Windows nie wykonuje pliku wsadowego (.cmd
to alias dla .bat
), należy wywołać cmd.exe
, aby go wykonać.
więc czy słusznie jest powiedzieć, że użycie git.cmd odwołuje się do pierwszej opcji? – prusswan
AFAIK tak, wybrałbym drugą opcję, jeśli chcesz użyć git.exe ze zwykłego polecenia cmd. –