Ставим GIT под Windows

3K
.
AlkatraZ
╭∩╮ (`-`) ╭∩╮
всем привет!
Че то давно я не писал никаких статей, сегодня восполню этот пробел и расскажу Вам, как поднять кошерный GIT под Windows. Кто работает под Linux, у тех и так все ясно, а вот под Windows не все так однозначно, есть много путей достижения цели и что плохо, нет единой документации в одном месте, приходится много искать и экспериментировать.

Я перепробовал множество вариантов, в итоге по результатам экспериментов и опыта использования выбрал для себя (по моему мнению) лучший и хочу поделиться с Вами поэтапными инструкциями, ЧТО устанавливать и КАК?
---
Сразу хочу предупредить, что выкиньте (деинсталлируйте) всяческие Гитхаб, Битбукет и прочие клиенты, они нам нафиг ненужны. Мы будем поднимать реально удобную систему, максимально совместимую с классическим GIT (точнее, это и есть классический GIT, только скомпилированный под Windows, все нативные консольные команды) + удобный графический клиент.
.
AlkatraZ
╭∩╮ (`-`) ╭∩╮
Итак, первым пунктом нам понадобится собственно GIT.
И не какое-нибудь совместимое извращение, а настоящий, нативно-консольный.
Даже если Вы почти не пользуетесь консолью, он Вам все равно понадобится, ибо без него не будет работать GIT в большинстве IDE редакторов (к примеру PhpStorm требует наличия консольного GIT).
TortoiseGit, который мы установим далее, тоже это использует.

Для этого качаем GIT отсюда: https://git-scm.com/download/win
После скачки запускаем файл и проводим инсталляцию:

1) При выборе компонентов, которые будут устанавливаться, рекомендую все оставить по-умолчанию, за исключением:
* Отметьте пункт "Git Bash Here", это удобная консоль, она Вам потом очень понадобится. Разумеется можно выбрать и родную Windows консоль, но я лично предпочитаю использовать Bash от Git, там гарантируется 100% совместимость по командам.
* Не отмечайте пункт (не надо инсталлировать) "Git Gui Here". Лишний мусор нам не нужен, а Gui клиент мы будем использовать другой.

2) На следующем экране Вам будет предложено выбрать "Adjusting your PATH environment".
* Выбираем "Use Windows Command..." (второй пункт), это добавит GIT в окружение PATH и можно будет спокойно пользоваться как Windows консолью, так и Git Bash

3) На третьем экране спросят про обработку EOL (переносов строк).
* Смело можете оставить рекомендуемое значение (первый пункт списка).

Запустится установка, дождитесь ее окончания.

Вот и все, консольный GIT у нас уже установлен, но пока еще не настроен.
Не спешите с настройкой, ею займемся в 3-й части статьи.
.
AlkatraZ
╭∩╮ (`-`) ╭∩╮
Теперь установим GUI клиент.
Под Windows их существует довольно много: https://git-scm.com/downloads/guis и это не считая встроенных в IDE.
Но мне из всего этого многообразия, наиболее удобным показался TortoiseGit, его и будем ставить.
От работает через родной Windows проводник файлов и виден через файловые менюхи большинства программ. Очень удобно когда привыкнете.
Качаем отсюда: https://tortoisegit.org/
Выбираем версию, в зависимости от того, какой битности у Вас стоит Windows (32 или 64-bit).
Если хотите, чтоб говорило на Вашем языке, тут же можно скачать и локализацию (опять выбираете нужную битность).

В начале запускаем инсталляцию собственно TortoiseGit (язык, если надо установите после).

1) При выборе компонентов для установки, можете оставить все, что есть по-умолчанию.

2) Далее, он Вас спросит, какой SSH клиент хотите использовать: рекомендованный Putty, или нативный GIT, выбираем нативный GIT!!!

Дождитесь окончания установки, после (если надо) можете инсталлировать язык.
Потом попросит перезагрузить систему.
Все почти будет готово (о тонкой настройке расскажу ниже).
.
AlkatraZ
╭∩╮ (`-`) ╭∩╮
Теперь займемся настройкой GIT.

1) Первое, что вам следует сделать после установки Git, — указать ваше имя и адрес электронной почты. Это важно, потому что каждый коммит в Git содержит эту информацию, и она включена в коммиты, передаваемые вами. Для этого открываем Git Bash (консоль) и последовательно вводим следующие команды (имя и Email разумеется смените на свои):

git config --global user.name "Oleg Kasyanov"

git config --global user.email dev@mobicms.net

2) Сгенерируйте свой персональный SSH ключ (если конечно этого не сделали раньше).
В начале проверим, есть ли уже установленные ключи, для этого в Bash консоли набираем следующую команду:

ls -al ~/.ssh

Если ключ уже установлен, покажет список, в котором должны быть пункты: id_rsa, id_rsa.ppk, id_rsa.pub.
Если данные пункты есть, то ключи уже установлены, если нет, то генерируем новые (опять через консоль, свой Email указываем тот же, что и выше):

ssh-keygen -t rsa -b 4096 -C "dev@mobicms.net"

Жмем enter. Далее, спросит куда сохранять ключи, для Windows это будет Enter file in which to save the key (/c/Users/Oleg Kasyanov/.ssh/id_rsa):
Оставляем все как есть и просто жмем Enter

Далее спросит, хотите ли установить пароль. Тут все зависит от Вас. Я лично паролем не пользуюсь, ибо потом задолбает при каждом комите.
Если пароль нужен - вводим его и жмем Ентер, если не нужен, ничего не вводим и жмем Ентер.
Длее попросит повторить пароль. Если вводили, то повторите его, если нет, просто жмите Ентер.
Ключи готовы.

ВНИМАНИЕ!
Ключ - это Ваш пароль к репозиториям. Обязательно сохраните копию ключей в надежном месте.
Для этого зайдите в папку C:\Users\Ваше_Имя
Там увидите папку .ssh
Скопируйте ее всю в надежное место. Если вдруг потом придется переинсталлировать Windows, то просто скопируйте из резерва папку .ssh

3) Для того, чтоб использовать Ваш персональный SSH ключ с репозиторием, Вам надо открыть в каком нибудь текстовом редакторе файл id_rsa.pub который находится в вышеупомянутой папке .ssh и скопировать его содержимое (длинная строка с символами) в соответствующее поле настроек Вашего репозитория.
После этого станет очень удобно, Вам не придется при каждом доступе к репозиторию вводить логин и пароль, будет действовать Ваш персональный ключ.
Ключ можно получить не открывая файл, а воспользовавшись Bash консолью:

clip < ~/.ssh/id_rsa.pub

Ключ будет скопирован в буффер обмена и вы его сможете вставить в настройки репозитория.
---
На этом основные настройки Git закончены.
Если хотите воспользоваться продвинутыми настройками (а их великое множество), ищите описание в Интернете, это выходит за рамки данной статьи.
Для большинства хватит и базовых настроек.
.
AlkatraZ
╭∩╮ (`-`) ╭∩╮
Под конец, немного поковыряем TortoiseGIT.
В принципе, в нем самом хоть и есть куча настроек, ничего такого ковырять не придется, он сам подцепит все настройки, что мы сделали выше.
Но для нормальной работы, нам придется подковырять саму Windows и устранить (при желании) одну проблему.
Сама проблема заключается в отображении оверлейных иконок.

Что это за иконки?
Когда откроете в проводнике Ваш GIT проект, над каждым файлом будет значек, показывающий статус файла (актуален, изменен, игнорируется и т.д.).
Очень удобно и информативно.

Проблема заключается в том, что Windows Shell может отображать только 10 зарегистрированных оверлеев.
Но есть куча программ, которые пихают туда свои настройки, не обращая внимание на уже имеющиеся, в итоге получаются конфликты, точнее Windows показывает только первые 10 иконок из всех зарегистрированных.
К сожалению TortoiseGIT садится всегда где-то в конце и в итоге его иконки не видны.
как исправить - читайте далее...
Прикрепленные файлы:
.
AlkatraZ
╭∩╮ (`-`) ╭∩╮
Исправляем overlay Icons
Для этого нам придется немного поковырять Windows Registry. Чтоб сильно не париться, поступите так:

1) Откройте проводник файлов.
2) На любой папке щелкните правой клавишей мыши, в контекстном меню выбираем пункт TortoiseGit -> Settings
3) Откроется большое меню настроек, но мы там НИЧЕГО НЕ ТРОГАЕМ! В дереве настроек выбираем Icon Overlays -> Overlay Handlers
4) На страничке Overlay Handlers увидите кнопку "Start registry Editor", жмите ее, откроется редактор реестра и сразу в нужном месте (пункт ShellIconOverlayIdentifiers).
5) Чтоб ничего не напортачили и была возможность откатиться назад, в редакторе реестра щелкаем правой клавишей на нашей папке реестра ShellIconOverlayIdentifiers и выбираем пункт Export. Экспортируем настройки в файл. Потом, если захотите все вернуть назад, просто два раза кликните по файлу и все ключи запишутся обратно в реестр.

А вот далее, придется чем-то пожертвовать.
В качестве оверлеев обычно зарегистрированы различные облачные сервисы (DropBox, Google Drive, Yandex диск, SkyDrive и прочая муть).
Нам придется удалить из папки реестра ShellIconOverlayIdentifiers ВСЕ ключи, кроме *Tortoise***
На работе облачных сервисов это никак не скажется, просто в проводнике для них не будут отображаться оверлеи. Хотя полюбому, из-за ограничений, если у вас стоит несколько облак, какие-то из них и так отображались без оверлеев.
Для разработчиков (коими мы и являемся) смело можно пожертвовать облачными оверлеями в пользу TortoiseGit, оно того стоит.

Единственная проблема у Вас может возникнуть с выпилом ключей от SkyDrive, он зараза садится под системным экаунтом и просто так удалиться не даст.
Но мы не дураки, и знаем как это сделать
(далее описываю для Windows 10, которая под рукой и в которой возникает проблема с выпиливанием skyDrive)
1) Правой клавишей щелкаем на ключе SkyDrive который хотим удалить
2) В менюхе выбираем пункт Permissions и в нем жмем кнопарь "Advanced"
3) Вверху открывшегося окна видим строку Owner: (там будет или SYSTEM, или TrustedInstaller) и ссылка "change" которую и жмем.
4) В открывшемся окне жмем расширенный поиск, находим группу Administrators и добавляем ее как владелька.
5) Возвращаемся в список разрешений, находим группу Administrators, что мы добавили выше, редактируем и ставим все права.
6) Закрываем окно Permissions и далее, ключ уже можно будет удалить.
Эту процедуру придется проделать для каждого ключа SkyDrive, пока не удалите все.

Далее, закрываем реестр, перезагружаем Windows и система готова к работе.
===
UPD:
В последнем большом обновлении Windows 10, что пришло в этом году, видать исправили Overlay Handler, по крайней мере у меня лично совместно работают TortoiseGit и Dropbox, причем оверлейные иконки видны в обоих программах.
Если у Вас последняя версия (обновленная) Windows 10 и оверлеи видны, то инструкции из этого поста можете не выполнять.
.
╭∩╮ (`-`) ╭∩╮
Вот и все, надеюсь статья будет полезной.
Я лично убил очень много времени, пока все по частям выуживал в Интернете и проводил собственные эксперименты.

Удачи в разработке!
.
Сексуальность валенка
Ну его нафиг я лучше linux в виртуалке поставлю.
.
╭∩╮ (`-`) ╭∩╮
# Swank (17.08.2015 / 00:40)
Ну его нафиг я лучше linux в виртуалке поставлю.
Там не меньше действий придется делать.
Но тут зато у тебя будет очень удобный графический (GUI) клиент
.
Сексуальность валенка
AlkatraZ, Ну по кол действий это да, я обычно просто захожу на vps по ssh и там юзаю git, а на интерфейс как-то пофиг
Всего: 58