git.cmd против git.exe - в чем разница и какой из них следует использовать? - PullRequest
22 голосов
/ 20 января 2012

У меня есть приблизительное представление о том, что git.cmd является только оболочкой (но по умолчанию добавляется в PATH), но я обнаружил, что git.exe также работает, и я намерен использовать его в качестве обходного пути к этому проблема (комментарии к ней, относительно chcp на XP64).Не рекомендуется ли это по какой-либо причине?Кроме того, действительно ли git.cmd действительно нужен в первую очередь?

Примечание. Проблема chcp, на которую я ссылаюсь, не вызвана отсутствием записей PATH, поскольку в 'chcp' не распознается как внутреннийвнешняя команда, работающая программа или командный файл.на ПК с Windows

Ответы [ 3 ]

25 голосов
/ 22 января 2013

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 с новой исполняемой оболочкой здесь:

  1. git.cmd
  2. Оболочка git.exe

Вам не нужно беспокоиться об этой магии, просто поймите, что вам следует позвонитьобертка от всего, кроме среды msysgit bash.Когда вы добавляете git к пути в установщике, добавляется каталог Git \ cmd.Я не рекомендую добавлять все включенные утилиты в системный путь, так как это может вызвать много проблем, особенно если у вас есть другие установки msys или cygwin.На самом деле я никогда не пробовал это в недавней памяти, но я бы предположил, что на вашем пути будут размещены каталоги cmd и bin, причем приоритет будет cmd.

Для меня есть одинОгромное преимущество новой оболочки git.exe: она делает код, вызывающий git, более переносимым.Ранее, если бы я написал скрипт на python с именем git, мне пришлось бы либо выполнить команду в среде оболочки (subprocess.Popen() с shell=True), либо явно запустить файл cmd.Теперь я могу просто выполнить процесс с именем «git» независимо от операционной системы.Это связано с тем, что CreateProcess () в Windows не будет запускать пакетный файл (.cmd - псевдоним для .bat), для его запуска необходимо вызвать cmd.exe.

13 голосов
/ 21 января 2012

Существует три варианта установки msysgit.

  1. Во-первых, ничего не надето PATH, и у вас есть для использования Git Bash.

  2. Во-вторых, git.cmd и gitk.cmd добавляются в PATH, так что вы можете использовать его в cmd, Powershell, cygwin и т. Д., Не затрагивая другие инструменты, которые есть в Windows. (Эта git.cmd - оболочка, позволившая вам сделать это, чтобы ответить на вопрос).

  3. Третий (мой любимый) - добавить все инструменты и git.exe в PATH и использовать это. Это повлияет на инструменты Windows, и вы сможете использовать полный набор инструментов, который поставляется с MSYS.

Я всегда использовал третий вариант. Я никогда не видел, как это влияет на меня (я использую командлеты Powershell и powershell, а не стандартные команды Windows). Если вы такой и хотите, чтобы в вашем распоряжении были Mingw-exe, перейдите к третьему варианту, и у вас все будет хорошо.

5 голосов
/ 21 января 2012

Согласно git для Windows Installer у вас есть возможность добавить git.exe в ваш путь во время установки.Вы должны хорошо использовать эту опцию.

Option screen to select git.exe

...