Git сервер может быть расположен как в локальной сети, так и на каком-либо внешнем ресурсе, например, на хостинге.
В этой статье речь пойдет о доступе к серверу из локальной сети.
Рассмотрим конфигурацию, в которой участвуют три хоста - один git сервер и два git клиента.
На всех хостах установлена ubuntu 20.
Начнем с git сервера. Установим на нем ssh сервера:
Создадим в домашнем каталоге пользователя git каталог, где будут храниться все репозитарии:
mkdir /home/git/git
В нем создадим подкаталог для первого проекта:
cd /home/git/git
mkdir myrepo.git
cd /home/git/git/myrepo.git
Инициализируем репозитарий
git init --bare
Теперь переходим на первый клиентский хост.
На нем сгенерируем ssh-ключ:
ssh-keygen -t rsa -C "user1@domain.com"
Здесь вместо user1 вы подставите свое имя пользователя, вместо domain.com - свой почтовый домен.
В домашнем под-каталоге на первом клиентском хосте в каталоге .ssh появится ключ
id_rsa.pub
Скопируем его на гит сервер:
ssh-copy-id -i id_rsa.pub git@192.168.56.105
Вместо 192.168.56.105 подставьте ip своего локального гит сервера.
После чего на гит сервере в домашнем под-каталоге .ssh пользователя git добавится ключ в файле
authorized_keys
Вы можете проверить, что этот ключ работает, выполнив на первом клиентском хосте команду
ssh git@192.168.56.105
Вы должны войти на гит сервер по протоколу ssh без пароля.
Далее нам нужно на первой клиентской машине начать удаленно работать с пустым репозитарием,
который мы уже создали на гит сервере.
В домашнем каталоге пользователя на первой клиентской машине создадим каталог git,
в нем подкаталог myrepo.git
cd ~/git/myrepo.git
Создадим в нем пустой каталог src, затем зайдем в него
Теперь переходим на первый хост и от лица пользователя user1 переключаемся с ветки master на ветку dev
и видим, что в ветке dev появился первый коммит пользователя user2, в частности в файле readme.txt
появилась вторая строка:
git checkout dev
git log
Таким образом можно организовать работу в локальной сети с репозитарием git,
используя только его встроенный протокол.
Это простейший вариант работы с git, который не требует использования каких-то других протоколов.