Подтвердить что ты не робот

Git.cmd vs git.exe - какая разница и какой из них следует использовать?

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

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

4b9b3361

Ответ 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 для его выполнения.

Ответ 2

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

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

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

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

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

Ответ 3

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

Option screen to select git.exe