Рано или поздно любой разработчик дорастает до Git - распределённой системы управления версиями. И если в вашей жизни настал сей переломный момент, то эта статья возможно станет полезной для Вас, так как в ней пойдет речь о процессе установки Git на операционную систему Windows.
Скачиваем дистрибутив для вашей версии Windows c официального сайта https://git-scm.com и запускаем процесс установки.
Соглашаемся с лицензией
Соглашаемся со стандартной для свободного программного обеспечения GNU GPL лицензией.
Указываем путь установки
По умолчанию Git устанавливается в папку C:\Program Files\Git. Но. мой скромный опыт показывает, что это не самое лучшее решение, так как Git консольное приложение и пробел в пути может привести к ошибкам выполнения некоторых скриптов. Лучшим решением будет указать путь не содержащий пробелов, например C:\git.
Кстати, данная статья написана по причине того, что git стоял в папке Program Files и я не смог собрать Lua под MinGW.
Выбираем компоненты установки
Additional Icons - позволяет установить дополнительные иконки на рабочий стол.
Windows Explorer Integration - интеграция с проводником Windows.
Git Bash Here - добавит пункт вызова командной строки Bash в контекстное меню проводника (правая кнопка мыши).
Git Bash это консоль как в linux за основу которой была взята MSys2 - консоль созданная для кросс платформенного C\C++ компилятора MinGW. Хорошая замена стандартным сmd и Power Shell в том случае если Вы не являетесь противником командного синтаксиса linux и хотите свободно плавать в обеих средах и создавать платформонезависимые приложения.
Git GUI Here - добавит пункт вызова графической оболочки Git GUI в контекстное меню проводника (правая кнопка мыши).
Git создавался под Linux и изначально был ориентирован на работу в командной строке. Большинство IDE и редакторов кода имеют собственные интерфейсы работы с Git и не нуждаются в Git GUI. Учитывая все сказанное можно смело заявить, что Git GUI вещь на любителя, и чтобы не замусоривать контекстное меню проводника лучше отключить эту опцию.
Git LFS - поддержка больших файлов. Позволяет хранить большие файлы на отдельном сервере заменяя большие файлы на текстовые ссылки. Подробнее на https://git-lfs.github.com.
Associate .git* configuration files with default text editor - ассоциация файлов .git* с текстовым редактором по умолчанию.
Associate .sh files to be run with Bash - выполнение .sh файлов в консоли Git Bash. Файлы формата .sh это скриптовые системные файлы в Linux, что то вроде .bat или .cmd файлов в windows.
Use a True Type fonts in all console windows - использовать шрифты True Type во всех консолях Windows.
Check daily for Git for Windows updates - ежедневная проверка обновлений.
Указываем название папки в меню пуск
Можно указать Don't create a Start Menu folder для того, чтобы не создавать ничего в папке пуск.
Указываем текстовый редактор по умолчанию
Честно, когда нибудь я освою Vim, но пока думаю стоит остановиться на чем то привычном для пользователя Windows. Хотя, с вызовом текстового редактора из Git мне еще не приходилось.
Указываем, где использовать Git
Use Git from Git Bash only - использовать Git только в Git Bash. Git недоступен в Cmd, Power Shell и других программах.
Git from the command line and also form 3rd-party software - Git прописывается в PATH и доступен всем приложениям.
Use Git optional Unix tools from the Command Prompt - кроме Git системе станут доступны некоторые Unix команды. Тут лучше выбрать второй вариант. Если Вам сильно хочет Unix команд, то лучше для этих целей использовать Git Bash а не засорять Windows несвойственным ему функционалом.
Выбираем приложение для работы с SSH
Для обычной работы достаточно OpenSSH. Но есть возможность указать Plink.exe если вы используете PuTTY сессии. Признаюсь честно, никогда с подобным не сталкивался, всегда использовал OpenSSH, чего и Вам советую.
Указываем библиотеку для работы с SSL
SSL используется для шифрования трафика. В обычных условиях достаточно OpenSSL. В изощренных случаях можно использовать Windows Secure Channel Library, что позволит Вам использовать корневые сертификаты Root CA certificates распространяемые через Active Directory Domain Services.
Преобразование окончания строк
В незапамятные времена не у всех компьютеров были мониторы и вывод производился на принтер. Буквы печатала специальная печатающая головка которая управлялась кодами зарезервированными в таблице символов ASCII. Для возврата головки требовалось две команды: откатить головку в начало строки и опустить ее на символ вниз (подтянуть бумагу в верх). По этой причине в текстовых файлах строка заканчивалась двумя байтами - 0x0D, 0x0A (CRLF)
CR (Carrage return) - возврат каретки.
LF (Line feed) - подача бумаги на строку в верх.
Этой традиции по сей день придерживается компания Microsoft.
С другой стороны, два байта, это два байта. Это на 100% больше чем 1 байт. Конечно же, появились те, кто решил, что для столь часто выполняемой команды достаточно и одного байта 0x0A (LF).
Сторонниками этой теории оказались Unix и его наследник Linux.
Git отслеживает изменения в файлах, и каждый байт в строке важен. Строки заканчивающиеся на CRLF и LF для Git разные строки. Для решения этой проблемы в Git есть механики позволяющие конвертировать окончания строк автоматически.
Chekout Windows-style, commit Unix-style line endings - версия документов с которыми вы работаете будет в стиле Windows (CRLF) но храниться она будет в стиле Unix (LF).
Сhekout as-is, commit Unix-style line endings - Git будет хранить документы конвертируя окончания строк в Unix формат (LF). Работать с ними вы будете как есть. Выглядит опасно, так как если Вы положите документ в виде CRLF то Git вернет его как LF, и произойдет это не автоматически сразу, а когда ни будь во время отката или клонирования.
Сhekout as-is, commit as-is - ничего не изменяет, все хранится как есть.
Выбор эмулятора терминала
Позволяет выбрать какой терминал использовать.
Use MinTTY (ths default terminal of MSYS2) - использовать MinTTY. Выбор здорового человека, подходящий для выполнения большинства повседневных задач.
Use Windows default console window - использовать консольное окно Windows. Может быть нужно для корректной работы "interactive Python" или node.js. Хотя странно, так как node.js прекрасно работает в терминале MinTTY. Также стоит отметить, что в консоли windows будет много мороки с корректной поддержкой unicode и выводом текста на русском языке.
Экстра опции
Extra file system caching - кэширование значительно увеличивающее скорость работы Git.
Enable Git Credential Manager - нужно для мультифакторной аунтификации.
Enable symbolic links - включает поддержку символьных ссылок.
Установка
Завершаем установку
Проверка
Выполняем в консоли простую команду git --version которая выведет версию установленной Git.