Свой Git сервер на Windows
В принципе все это легко нагуглить, но тем не менее опишу свой опыт. Итак, есть windows сервер (в моем случае Windows Server 2008, но все описанное ниже применимо ко всем windows), на этом севере работает некое веб-приложение, которое хочется коллективно развивать командой из нескольких человек. Идеи лучше чем Git в голову не пришло.
Подготовительный этап
На сервере ставим и настраиваем SSH сервер (в моем случае это оказался Bitvise SSH Server, далее все настройки буду описывать относительно него).
Создаем пары public и private ключей для нужных пользователей, в настройках этих пользователей на SSH сервере добавляем им соответствующие public ключи и убеждаемся что разрешена авторизация по ключу.
Если требуется работать с Git из интернета, также пробрасываем соответствующий порт наружу, обычно это 22, но в моем случае получилось 222 по техническим причинам. Проверяем доступность сервера по SSH снаружи и возможность авторизации с ключом, PuTTY в помощь 🙂
Ставим собственно Git (в моем случае это msysgit). Народ предлагает ставить в короткий путь вроде C:/Git, но я ставил в каталог по-умолчанию, все работает. Через Git GUI создаем репозиторий, в моем случае это С:/Webroot/test-git.
Клиентская часть
В моем случае клиенты — тоже windows машины, на них потребуется Git (тот же msysgit) и клиент TurtoiseGit, в моем случае. На клиенте пытаемся склонировать наш репозиторий при помощи Git Clone, вводим урл
где mylogin — это ваш логин для ssh, example.com:222 — адрес сервера и порт (не обязательно), C:/Webroot/test-git — полный путь к репозиторию.
Жмем ОК, ждем, получаем ошибку и отправляемся дальше настраивать сервер.
Настройка Git на сервере
Первым делом идем в переменные окружения (Компьютер -> Свойства -> Дополнительные параметры системы -> Переменные среды). В разделе системные переменные находим PATH и жмем изменить. Убеждаемся что там есть, а если нет, то добавляем три папки:
C:\Program Files (x86)\Git\cmd;C:\Program Files (x86)\Git\bin;C:\Program Files (x86)\Git\libexec\git-core
На всякий случай напомню, что Git у нас стоит в C:\Program Files (x86)\Git.
Теперь проверяем, что Git доступен. Либо пытаемся еще раз Git Clone на клиенте и получаем другую ошибку, либо заходим по ssh и говорим git прямо и текущей папки, получаем краткий хелп от гита. Если ругается на неизвестную команду, ищем ошибку на предыдущем шаге.
Теперь наша проблема (если посмотреть логи ssh сервера) заключается в том, что git-upload-pack на вход получает путь, обернутый в одинарные кавычки, и естественно, не работает. Нормального решения нет, но есть подпорки, например как описано здесь. Моя версия проделанного:
C:\Program Files (x86)\Git\cmd\gitcmdhelper.sh
прописываем в него
Идем в настройки ssh сервера и для нужного пользователя (или группы) изменяем параметр Exec request prefix на
cmd.exe /c sh gitcmdhelper.sh
ВНИМАНИЕ! после .sh есть пробел! Строка получается вот такая «cmd.exe /c sh gitcmdhelper.sh «, без пробела на конце не будет работать!
Замечание. Эта подпорка лишает вас возможности работать с путями в которых есть пробелы, в большинстве случаев это не критично, но все же.
В глобальном конфиге Git вносим следующие изменения (как советуют на хабре), правим C:\Program Files (x86)\Git\etc\gitconfig
[core]symlinks = false
autocrlf = true
ignorecase = true
quotepath = false
[i18n]
commitencoding = cp1251
logoutputencoding = cp1251
И, о чудо! Оно теперь работает! Ну по крайней мере мне удалось сделать Pull, Commit и Push.
И последнее — хуки
Поскольку в git-e не принято пушить в основной рабочий репозиторий (для этого есть ряд причин, кому интересно, в гугль), то можно сделать bare-репозиторий, в который будут приходить все пуши, а с помощью механизмов хуков изменения будет забирать рабочая копия.
Итак у нас есть bare-репозиторий C:\Webroot\test-git в который приходят все комиты и пуши, и рабочая копия C:\Webroot\test-git.production, на которую настроен document root сервера.
Рабочая копия должна быть «настроена на» bare-репозиторий, для этого в рабочей копии выполним команду
git remote add local C:/Webroot/test-git
результатом станет добавление в C:\Webroot\test-git.production\.git\config следующего
.
[remote «local»]
url = C:/Webroot/test-git
fetch = +refs/heads/*:refs/remotes/local/*
Для того чтоб заработали хуки, нужно положить файл с названием действия в папку в bare-репозитории .git/hooks/, в нашем случае это будет
обычно там уже заложен post-receive.sample, его достаточно просто переименовать. А в сам файл вписываем следующее содержимое, которое после получения данных заставит рабочую копию сделать pull:
unset GIT_DIR
cd C:/Webroot/test-git.production
git pull local master
Таким образом мы будем корректно обновлять рабочую копию при каждом push-е в bare-репозиторий.
Вот пара полезных ссылок по теме:
/bar.com.git, it will go to
Поднимать Git на windows, по моему мнению, не самое лучшее решение, если есть возможность все же лучше это сделать на Linux.
gosha20777
Собственный Git на Windows
January 05, 2018 | 3 Minute Read
Н у вот наступил 11111100010 год ии у меня появилось свободная минутка, чтобы написать тут что-то полезное:-)
Случилось так, что понадобился приватный git репозиторий, а покупать VIP аккаунт на github не хотелось, да и политика безопасности компании, для которой разрабатывается проект, не позволяет это делать. По этому было принято решение о развертывании собственного git-сервера. Так как я C# developer, то речь пойдет конечно же о Windows Server и IIS Server. Пользователям Linux скажу, что там установка этого «богатства» еще проще и состоит из пары команд в терминале.
Немного о платформе.
Данный git-server был написан на C# на ASP.NET и представляет собой Web приложение. Все исходные коды доступны тут. Все желающие могут ознакомиться и оценить кривизну кода) А мы поехали дальше -)
Как его ставить?
Для успешной установки нам нужны
- Сам сервер на Windows Server 2008 R2/2012/2012 R2/2016 (кто-то сидит на ней?)
- Internet Information Services (IIS) 7 или 8
- .NET Framework 4.6
- visual redist 2012/2015 и CLR
- Server дистрибутив
Быстро пробежимся по основным пунктам. У меня стоит Windows Server 2012 R2. И показывать я буду на ней. Для Windows Server 2008 все примерно также. Предполагается, что Виндасервер у вас сконфигурирован и настроен. Если это не так – идите к документации)
IIS Сервер + .NET Framework.
Запускаем Server Manager (диспетчер серверов) -> Manage (Управление) -> Add Roles and Features (Добавить роли и компоненты) …

Выбрать Role-based or Feature-based Installation (установка ролей или компонентов)
Далее выбираем наш сервер

В ролях выбираем Web Server (IIS).

В компонентах жмякаем на .NET framework 4.5 и на последнем шаге выбираем нужные настройки.
Установка… Потребует перезагрузки сервера. Загружаем .NET Framework 4.6 и ставим его. Все теперь можно ребутиться.
Для любителей консоли…
Git Server
Всё, теперь можно перейти к непосредственно развёртыванию git сервера. Разархивируем содержимое дистрибутива в wwwroot IIS-сервера ( C:\inetpub\wwwroot ) и даём права учетной записи IIS_IUSERS на модификацию каталога App_Data .

Запускаем IIS Manager и конвертируем Git в приложение.

После конвертации жмем Action – Browse (Управление приложением – обзор) и у нас должен открыться сайтик с формой для входа. Теперь он доступен по адресу IP сервера\git в локальной сети. При желании его можно вывезти во внешнюю сеть и вообще делать с ним все что душе угодно!
Настройка.
По стандарту логин пароль для входа admin\admin.

В настройках можно указать другой путь для хранения файлов, изменить язык и вообще сделать много полезного)
Можно добавлять новых пользователей и осуществлять контроль видимости репозиториев, выдавать исключительные права пользователям. Также можно объединять пользователей в команды и управлять ими. На пример команде Core Developers будут доступны все ветки в репозитории, а команде Testers только ветка Master.
Я надеюсь данная статья была полезна для вас. Ставьте Like за встроенный редактор кода и подсветку синтаксиса))) Приятного кодинга!
Установка Git в Windows
Система контроля версий Git полезна не только для программистов но и для системных администраторов. Рассмотрим процесс установки программного обеспечения, а также настройки подключения к репозиторию GitHub, на сервере под управлением ОС Windows.
Git — одна из популярных современных систем контроля версий. В основном используется разработчиками программного обеспечения с целью отслеживания изменений в программных продуктах в ходе их разработки. Изначально Git создали для помощи в разработке ядра Linux, однако из-за своих преимуществ, проект ушел в массы.
Приступаем к установке.
Открываем официальный сайт проекта, кликаем по 64-битной версии для Windows.

Загрузка начнется автоматически, дожидаемся ее окончания. Запускаем полученный файл.
Программа установки приветствует нас лицензионным соглашением. Кликаем по кнопке “Next”.
На следующем шаге указываем путь установки. Нас устраивает указанный по умолчанию. Кликаем “Next”.
На этапе выбора компонентов, отметим галочкой создание ярлыка Git на рабочем столе и переходим к следующему этапу.
Теперь программа установки предлагает создать ярлык в меню Пуск. Если в этом не видите необходимости, установите соответствующую галку. Кликаем по кнопке “Next”.
На следующем этапе, установщик предложит выбрать редактор для git по умолчанию. Для новичков лучше использовать nano, для тех, кто любит посложнее — Vim. Хотя допускается использование Notepad++ и прочего. Переходим к следующему шагу.
Теперь программа установщик спрашивает как Вы собираетесь использовать командную строку:
- Use Git from Git Bash only — использование только из командной строки Bash.
- Use Git from the Windows Command Prompt — использование командной строки Bash, а также минимальный набор команд Git из командной строки Windows.
- Use Git and optional Unix tools from the Windows Command Prompt — использование Git и утилит Unix из командной строки Windows. При выборе этой опции будут перезаписаны некоторые утилиты ОС Windows, например find и sort.
Оставляем первый вариант и двигаемся дальше.
Теперь установщик спрашивает о том, какую библиотеку следует использовать для HTTPS-соединений. Оставляем openssl и переходим к следующему шагу.
Следующий шаг можно назвать самым значимым. Вопрос программы установки в том, какой формат завершения строки использовать. Одной из отличительных особенностей Windows от Unix-подобных систем — символ перехода на новую строку в файлах, а именно, LF и CRLF — управляющие символ для переноса строки в Unix и Windows соответственно.
Мы рекомендуем выбрать параметр предложенный системой — отладка файла в формате Windows, а загрузка файла — в Unix-формате. Кликаем по кнопке “Далее”.
На данном этапе, программа запросит каким терминалом пользоваться далее:
- MinTTY — терминал Unix;
- Windows — стандартный терминал (командная строка) Windows.
В нашем случае оставляем “как есть” и двигаемся дальше.
На следующем шаге, установщик попросит отметить необходимые функции:
- File system caching — кэширование файловой системой.
- Git Credential Manager — включить менеджер учетных данных.
- Symbolic links — разрешить использование символьных ссылок.
Выбираем то, что необходимо и переходим к следующему шагу.
На данном шаге, программа установки предлагает использовать экспериментальную опцию. Использовать ее или нет — решать Вам. Кликаем по кнопке “Install”.
Программа приступает к копированию файлов. Дожидаемся окончания процесса.
По окончании процесса установки нажимаем “Finish”.
Подключаемся к репозиторию.
Предполагается, что у вас уже есть своя учетная запись на github/gitlab. Если нет, то, в случае с github, проходим несложный процесс регистрации на сайте. Затем авторизуемся на нем и создаем репозиторий. Для этого кликаем по кнопке “Start a project”.
Указываем имя репозитория и кликаем по кнопке “Create repository”.
Предположим, что у нас есть файл, который необходимо добавить в репозиторий git или gitlab. Открываем папку, где располагается файл, кликаем правой кнопкой мыши по свободному месту и из открывшегося контекстного меню выбираем “Git Bash Here”.
Откроется командная строка. Последовательно выполняем следующие команды:
git config —global user.email «youmail@example.com»
git config —global user.name «Ваше имя»
Таким образом мы указали нашу почту и имя.
Для того, чтобы начать отслеживать изменения в текущей папке, выполняем следующие команды:
Выполняем свой первый коммит и добавляем изменения на сервер:
Важно. Чтобы внести изменения на сервер, следует использовать для github:
git remote add origin https://github.com/пользователь/название_репозитория.git
git push -u origin master
git remote add gitlab https://server/namespace/project.git
git push -u gitlab master
После запуска команды, откроется окно авторизации. Вводим данные, которые использовали при регистрации.
Настройка аутентификации по SSH-ключам.
Для начала создадим ключ:
В ходе генерации ключа, программа запросит ввод парольной фразы, которая необходима для защиты самого ключа. Можно ответить на вопрос двойным нажатием на Enter.
Закрытый ключ будет находиться по пути C:Users .sshid_rsa. Открытый ключ — C:Users .sshid_rsa.pub
Добавляем ключи к ssh-агенту:
Добавляем созданный ключ на сервер Git. На сайте github, в верхнем правом углу, кликаем по иконке учетной записи, выбираем “Setting”.
На обновленной странице, в левом меню, выбираем “SSH and PGP keys”, а в основной части окна, напротив SSH keys, кликаем по кнопке “New SSH key”.
Заполняем поле Title. В поле Key вставляем содержимое файла C:Users .sshid_rsa.pub
Кликаем по кнопке “Add SSH key”.
Если все выполнено правильно, появится примерно такая запись:
Для проверки настроек, выполняем команду:
В ходе выполнения команды, программа запросит: “Уверены ли вы в продолжении соединения”. Это стандартный вопрос безопасности. Отвечаем — yes.
Если все выполнено правильно, программа выведет приветственную речь.




























