Ответ 1
git.cmd
больше не существует в текущих версиях msysgit (например, 1.8.0). git.cmd
была оболочкой, которая была заменена новой оболочкой с именем git.exe
. Это не следует путать с фактическим git.exe
.
Если вы посмотрите на каталог Git в %ProgramFiles(x86)%
или %ProgramFiles%
, вы увидите следующую структуру:
Git
|-- bin
| |-- git.exe
|-- cmd
|-- git.exe
Обертка существует в msysgit в течение длительного времени, чтобы правильно настроить среду для использования Git из cmd.exe. Если вы используете включенную оболочку bash, она будет запускать git.exe напрямую.
Вы можете сравнить старую версию cmd с новой исполняемой оболочкой здесь:
Вам не нужно беспокоиться об этой магии, просто поймите, что вы должны вызывать оболочку из ничего, кроме среды msysgit bash. Когда вы добавляете Git к пути в установщике, добавляется каталог Git\cmd. Я не рекомендую добавлять все включенные утилиты на свой системный путь, так как это может вызвать множество проблем, особенно если у вас есть другие установки msys или cygwin. Я никогда не пробовал это в недавней памяти, но я бы предположил, что он помещает в каталог как каталоги cmd
, так и bin
, с приоритетом cmd
.
Для меня есть одно огромное преимущество для новой оболочки git.exe: она делает код, который называет Git более переносимым. Раньше, если бы я написал python script, который назывался git, мне пришлось бы либо выполнить команду с оболочкой (subprocess.Popen()
с помощью shell=True
), либо явно запустить cmd файл. Теперь я могу просто выполнить процесс с git 'как имя, независимо от ОС. Это потому, что CreateProcess() в Windows не будет выполнять пакетный файл (.cmd
является псевдонимом для .bat
), вам нужно вызвать cmd.exe
для его выполнения.