Страницы

Поиск по вопросам

понедельник, 15 октября 2018 г.

Разница в использовании git cmd и git bash под windows

Установил Git for Windows с сайта https://git-scm.com/ После установки есть возможность запускать две консоли - git cmd и git bash Я так понимаю, что git cmd - командная строка windows, а git bash - командная строка linux. Первые шаги при использовании не выявили существенных отличий в работе обоих. Заметил лишь, что в git bash есть удобное и достаточно приятное выделение цветом, а также подсказки для команд при двойном нажатии Tab. Наверняка есть более глобальные отличия между git cmd и git bash, которые заставят любителя cmd запускать bash. Вопрос: какие? Ибо тогда зачем в сборку для windows добавлять альтернативу cmd?


Ответ

Не бывает git cmd или git bash. Есть только сервисные утилиты, а точнее одна сервисная утилита с разными именами: git-cmd.exe и git-bash.exe
Оба эти exe-шника делают
Инициализация переменных окружения (PATH, и пр.) Запуск терминала.
Разница между ними только одна - по умолчанию git-bash.exe запускает терминал mintty с bash внутри. git-cmd.exe запускает стандартный терминал Windows с cmd.exe. Более того, git-cmd.exe имеет ключик --command=... с помощью которого можно запустить bash вместо cmd при желании.
git.exe это самостоятельная программа рядом с которой лежат все необходимые утилиты из пакета msys (например ls, vim, sed, и прочая), а недостающие утилиты можно "доставить" с помощью pacman. Предполагаемая проблема с "путями" не имеет оснований - все команды выполняет сам гит. git add **/*.cpp будет обрабатываться самим гитом.
Реальные различия:
Из командной строки cmd.exe несколько меняется синтаксис, т.к. ^ это управляющий символ cmd.exe. Например, вместо git.exe rebase -i 2385397^1 нужно писать git.exe rebase -i 2385397^^1 Маски файлов, вроде вышеописанного git add *.cpp не "разворачиваются" в список файлов, то есть аргументы передаются без изменений и git самостоятельно выполняет поиск подходящих файлов. В итоге мы имеем ошибочное поведение когда git add *.cpp добавляет файлы из подкаталогов. В консоли cmd.exe (если только она не в ConEmu запущена) нельзя использовать 256 цветов в Vim.
Вот наверное и всё.

Комментариев нет:

Отправить комментарий