
Что касается Git-хостинга, у вас есть несколько вариантов. GitHub, Gitlab и Bitbucket — популярные решения, но запуск собственного Git-сервера — это альтернатива, которую стоит рассмотреть.
Настройка Git-сервера позволяет вам создавать приватные репозитории без ограничений бесплатных планов провайдеров.
В этом руководстве мы объясним, как настроить «голый» Git-сервер на Linux. Этот вариант хорошо подходит, если у вас немного репозиториев, а участники хорошо разбираются в технологиях. В противном случае вам стоит рассмотреть возможность установки собственного Git-приложения, например, Gitea, Gogs или Gitlab .
Сервер Git можно настроить на любой удаленной машине Linux или даже в вашей локальной системе.
Настройка Git-сервера
Первый шаг — установка Git на ваш сервер.
Если вы используете Debian или Ubuntu, обновите локальный индекс пакетов и установите git, выполнив следующие команды от имени пользователя sudo:
sudo apt update && sudo apt install git
Чтобы установить пакет git на серверы CentOS, введите:
sudo yum install git
Затем создайте нового пользователя , который будет управлять репозиториями Git:
sudo useradd -r -m -U -d /home/git -s /bin/bash git
Домашний каталог пользователя — /home/git . Все репозитории будут храниться в этом каталоге. Пароль для пользователя «git» не установлен, вход будет возможен только по SSH-ключу.
Переключитесь на пользователя «git» с помощью команды su :
sudo su - git
Выполните следующие команды, чтобы создать каталог SSH и установить правильные разрешения :
mkdir -p ~/.ssh && chmod 0700 ~/.ssh
Создайте файл с именем ~/.ssh/authorized_keys в котором будут храниться SSH-ключи авторизованных пользователей:
touch ~/.ssh/authorized_keys && chmod 0600 ~/.ssh/authorized_keys
Вот и всё. Настройка сервера завершена. Теперь вы готовы создать свой первый Git-репозиторий.
Выполните следующую команду, чтобы инициировать новый пустой репозиторий:
git init --bare ~/projectname.git
Вы можете назвать каталог как угодно. Важно создать репозиторий в домашнем каталоге пользователя «git».
Initialized empty Git repository in /home/git/projectname.git/
Настройка локального репозитория Git
Чтобы иметь возможность отправлять локальные изменения git на сервер Git, вам нужно добавить открытый ключ SSH локального пользователя в файл authorized_keys удаленного пользователя «git».
Если у вас уже есть пара ключей SSH, созданная в локальной системе, вы можете отобразить открытый ключ, введя:
cat ~/.ssh/id_rsa.pub
Вывод должен выглядеть примерно так:
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDd/mnMzHwjUzK8g3ldfsfRpJuC16mhWamaXRk8ySQrD/dzpbRLfDnZsLxCzRoq+ZzFHGwcQlJergtergdHGRrO8FE5jl3IWRRp+mP12qYw== danny@linuxgazette.ru
Если вы получили сообщение об ошибке « No such file or directory , это означает, что на вашем локальном компьютере не сгенерирована пара ключей SSH.
Для генерации новой пары ключей SSH используйте следующую команду:
ssh-keygen -t rsa -b 4096 -C "your_email@domain.com"
Скопируйте вывод команды cat , приведенной выше, и вернитесь в консоль сервера Git.
На сервере откройте текстовый редактор и вставьте открытый ключ, скопированный с локальной машины, в файл ~/.ssh/authorized_keys :
sudo nano /home/git/.ssh/authorized_keys
Весь текст открытого ключа должен располагаться на одной строке.
Мы предполагаем, что пакет Git уже установлен на вашем локальном компьютере. Если нет, установите его так же, как описано в предыдущих разделах.
Если у вас есть существующий проект без версии, перейдите в его каталог. Если вы начинаете с нуля, создайте каталог проекта и перейдите в него:
cd /path/to/local/project
Инициализируем git-репозиторий:
git init .
Последний шаг — добавить git remote в ваш локальный репозиторий:
git remote add origin git@git_server_ip:projectname.git
Не забудьте заменить git_server_ip на имя хоста или IP-адрес вашего Git-сервера.
Чтобы проверить, что все настроено правильно, создайте тестовый файл :
touch test_file
Добавьте изменения в промежуточную область:
git add .
Зафиксируйте изменения:
git commit -m "descriptive message"
Перенесите изменения локального репозитория в удаленный репозиторий:
git push -u origin master
Если все настроено правильно, вывод должен выглядеть примерно так:
Counting objects: 3, done. Writing objects: 100% (3/3), 218 bytes | 218.00 KiB/s, done. Total 3 (delta 0), reused 0 (delta 0) To git_server_ip:projectname.git * [new branch] master -> master Branch 'master' set up to track remote branch 'master' from 'origin'.
Чтобы добавить нового соавтора, просто скопируйте его открытый ключ SSH в файл ~/.ssh/authorized_keys пользователя «git».
Вы можете использовать те же шаги для создания новых репозиториев. Важно отметить, что удалённый репозиторий должен существовать до того, как вы добавите git remote в локальный репозиторий.
Заключение
В этом уроке мы показали вам, как настроить собственный частный Git-сервер и создать репозитории.
Если у вас возникла проблема или вы хотите оставить отзыв, оставьте комментарий ниже.
Связанные руководства