В данной заметке рассказывается как установить серверный репозитарий системы контроля версий git на ОС lubuntu/ubuntu сервер. В качестве сервера используется одноплатный компьютер Cubietruck.

Если вы на винде, то подразумевается что вы используете unix-окружение. Вместо cygwin может быть использован git bash, который поставляется в релизе http://git-scm.com/download/win.

Сначала сгенерируем ssh-ключ на компьютере-клиенте, с которого мы будем коммитить. 

ssh-keygen -t rsa -C "ваш_меил@example.com"

Нажимаем ентер три раза. В результате будет сгенерен файл с открытым ключем, который нужно будет скопировать на сервер. Путь к файлу указан в Your public key has been saved in : путь. Проще всего скопировать содержимое файла в буффер обмена, чтобы потом просто вставить в редактор, запущенный на ssh-терминале (если у вас есть к нему доступ):

cat ~/.ssh/id_rsa.pub

Далее работаем на сервере (вместо apt-get install может быть ваш pacman -S, yum install и т.д.):

sudo apt-get install git
sudo adduser git
su git
mkdir .ssh

Открываем файл куда нужно добавлять ключи и вставляем туда, то что скопировали в буффер.

vim ~/.ssh/authorized_keys

Сохраняем файл и выполняем:

mkdir ~/имя_проекта.git
cd ~/имя_проекта.git/
git --bare init

Далее нужно сделать начальный коммит на вашей машине-клиенте. Вместо адрес_сервера указывайте айпи или доменное имя вашего сервера. Если сервер должен быть доступен за пределами локальной сети, нужно пробросить ssh-порт (22), при этом проследите чтобы пароль от всех пользователей системы в т.ч. git был достаточно надежным, и желательно вообще запретить доступ по ssh всем пользователям кроме git (добавить "AllowUsers git" в sshd_config).

cd папка_с_начальными_файлами_пректа
git init
git add .
git commit -m 'initial commit'
git remote add origin [email protected]адресс_сервера:/home/git/имя_пректа.git
git push origin master

Если на вашем сервере будут работать несколько пользователей, попросите их сгенерировать открытые ключи и прислать вам. Вы должны их добавить в файл к вашему ключу (/home/git/.ssh/authorized_keys) просто с новой строки. Затем пользователи должны будут выполнить:

git clone [email protected]адресс_сервера:/home/git/имя_пректа.git

Пароль пользователя git знать вашим пользователям не нужно, так как их открытые ключи добавлены на сервер.