Search     or:     and:
 LINUX 
 Language 
 Kernel 
 Package 
 Book 
 Test 
 OS 
 Forum 
iakovlev.org

Git

Git сервер может быть расположен как в локальной сети, так и на каком-либо внешнем ресурсе, например, на хостинге.
В этой статье речь пойдет о доступе к серверу из локальной сети. Рассмотрим конфигурацию, в которой участвуют три хоста - один git сервер и два git клиента. На всех хостах установлена ubuntu 20.

Начнем с git сервера. Установим на нем ssh сервера:

 sudo apt-get install ssh
 
В файле

 /etc/ssh/sshd_config 
 
раскомментировать строку

 AuthorizedKeysFile   .ssh/authorized_keys .ssh/authorized_keys2
 
Перезапускаем ssh сервер:

 service ssh restart
 
Ставим гит:

 sudo apt-get install git
 
Добавляем пользователя git

 sudo adduser git
 
Входим в систему пользвателем git

 su git
 
Создадим в домашнем каталоге пользователя 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, затем зайдем в него

 cd ~/git/myrepo.git/scr
 
Создадим файл

 ~/git/myrepo.git/src/readme.txt
 
Добавим в этот файл строку

 Первый коммит пользователя user1
 
и выполним команды

 cd ~/git/myrepo.git    
 git init
 git remote add origin git@192.168.56.105:/home/git/git/myrepo.git
 git add .
 
Выполняем первый коммит

 git config --global user.name "user1"
 git config --global user.email user1@domain.com    
 git commit -m 'Первый коммит user1'
 
Гит выведет список файлов из каталога src. Зальем изменения на сервер

 git push origin master
 
Гит сервер скажет, что создан новый бранч. Наберем команду

 git status    
 
Гит сервер скажет, что мы находимся на ветке master.

Теперь переходим на второй клиентский хост. На нем сгенерируем ssh-ключ:

 ssh-keygen -t rsa -C "user2@domain.com"
 
Скопируем ключ

 ssh-copy-id -i id_rsa.pub git@192.168.56.105
 
Создадим в домашнем каталоге пользователя user2 подкаталог git и перейдем в него

 cd ~/git    
 
Клонируем с гит-сервера репозитарий

 git clone git@192.168.56.105:/home/git/git/myrepo.git    
 
Зайдем в него

 cd ~/git/myrepo    
 
Посмотрим список коммитов и убедимся, что в нем пока только коммиты пользователя user1

 git log    
 
Проинициализируем пользователя

 git config --global user.name "user2"
 git config --global user.email user2@domain.com    
 
Создадим новую ветку в проекте - назовем ее dev

 git branch dev    
 
Переключиться на ветку

 git checkout dev
 git status
 
Добавим в файл readme.txt вторую строку

 Второй коммит пользователя user2 из ветки dev
 
Выполним команды

 git add .
 git status    
 
Закоммитим

 git commit -m 'Первый коммит user2'
 
Зальем изменения на сервер

 git push origin dev    
 
Теперь переходим на первый хост и от лица пользователя user1 переключаемся с ветки master на ветку dev и видим, что в ветке dev появился первый коммит пользователя user2, в частности в файле readme.txt появилась вторая строка:

 git checkout dev
 git log
 

Таким образом можно организовать работу в локальной сети с репозитарием git, используя только его встроенный протокол. Это простейший вариант работы с git, который не требует использования каких-то других протоколов.



Оставьте свой комментарий !

Ваше имя:
Комментарий:
Оба поля являются обязательными

 Автор  Комментарий к данной статье