Search     or:     and:
 LINUX 
 Language 
 Kernel 
 Package 
 Book 
 Test 
 OS 
 Forum 
 iakovlev.org 
 Packages
 Make 
 Iptables 
 Nmap 
 Apache 
 LFS 
 TUX 
 cURL 
 libpcap 
 Parted 
 Httpd 
 File managers 
 FFMPEG 
 RTMP 
 SQL 
 Test 
 Git 
NEWS
Последние статьи :
  Тренажёр 16.01   
  Эльбрус 05.12   
  Алгоритмы 12.04   
  Rust 07.11   
  Go 25.12   
  EXT4 10.11   
  FS benchmark 15.09   
  Сетунь 23.07   
  Trees 25.06   
  Apache 03.02   
 
TOP 20
 Linux Kernel 2.6...5170 
 Trees...938 
 Максвелл 3...870 
 Go Web ...823 
 William Gropp...802 
 Ethreal 3...787 
 Gary V.Vaughan-> Libtool...772 
 Ethreal 4...770 
 Rodriguez 6...763 
 Ext4 FS...755 
 Steve Pate 1...754 
 Clickhouse...753 
 Ethreal 1...742 
 Secure Programming for Li...731 
 C++ Patterns 3...716 
 Ulrich Drepper...696 
 Assembler...694 
 DevFS...660 
 Стивенс 9...649 
 MySQL & PosgreSQL...631 
 
  01.01.2024 : 3621733 посещений 

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, который не требует использования каких-то других протоколов.



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

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

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