Хостинг → Создаем Git-репозиторий на Locum.ru
Использование системы контроля версий для управления кодом собственного проекта — прекрасное и рациональное решение, успешно применяемое тысячами команд разработчиков по всему миру.
Главный вопрос, возникающий после выбора системы контроля версий: где же хранить репозиторий, в котором будет лежать полная история развития вашего проекта?
В случае использования распределённой системы контроля версий Git и виртуального хостинга Locum, этот вопрос можно решить буквально одним движением руки, не прибегая к использованию дорогостоящих тарифных планов GitHub или Assembla.
Итак, допустим, что у нас есть некоторый проект, репозиторий которого можно сохранить на хостинге Locum, и пусть он находится в каталоге meet.git
.
Для начала узнаем название вашего сервера виртуального хостинга. Эту информацию вы можете посмотреть в нашей клиентской панели: вкладка «Услуги» → раздел «FTP и SSH».
Зайдём на сервер виртуального хостинга через SSH и подготовим окружение для работы Git.
% ssh hosting_ПОЛЬЗОВАТЕЛЬ@ВАШ_СЕРВЕР.locum.ru
% mkdir -p ~/git/meet.git
% cd ~/git/meet.git
% git init --bare
Команда git init
с ключом --bare
создаст репозиторий в текущем каталоге, обеспечивая хранение исключительно служебной информации и блоков данных. При этом напрямую работать с сохранёнными файлами и каталогами будет невозможно: все данные проекта хранятся во внутреннем представлении Git.
Работа с репозиторием будет проводиться поверх протокола SSH, поэтому лучше избавиться от постоянного требования ввода пароля, добавив свой публичный SSH-ключ в список авторизованных ключей на сервере: достаточно просто скопировать ваш публичный SSH-ключ в конец файла ~/.ssh/authorized_keys
, а если такого файла не существует, то достаточно будет просто создать его.
На самом деле, всё это можно легко автоматизировать. Выполните данную команду на вашем локальном компьютере:
% cat ~/.ssh/id_rsa.pub | ssh hosting_ПОЛЬЗОВАТЕЛЬ@ВАШ_СЕРВЕР.locum.ru 'cat >> ~/.ssh/authorized_keys'
На всякий случай, стоит удостовериться, что директория .ssh
и список авторизованных ключей закрыты для чтения остальными пользователями. Это требование продиктовано реализацией OpenSSH и здравым смыслом. Для этого достаточно выполнить команду на нашем сервере:
% ssh hosting_ПОЛЬЗОВАТЕЛЬ@ВАШ_СЕРВЕР.locum.ru 'chmod 0700 ~/.ssh'
Отлично, теперь работа с нашими серверами при помощи SSH станет гораздо проще и комфортнее, без какого-либо ущерба безопасности. Главное — мы выполнили все приготовления для функционирования Git.
Создадим в директории вашего проекта на локальном компьютере Git-репозиторий:
% cd meet.git
% git init
Добавим в учёт все файлы вашего проекта:
% git add .
Пока не поздно, можно сделать ревизию состояния всех файлов:
% git status
Необходимо принять изменения (выполнить commit). Каждое множество изменений обязано сопровождаться хотя бы кратким описанием. Поскольку это наш первый коммит, то описание будет соответствующим:
% git commit -m 'initial commit'
Отлично, теперь на вашем локальном компьютере выполняется полноценный контроль версий. С этого момента вы сможете отслеживать любые изменения в коде вашего проекта, что позволяет значительно облегчить процесс разработки и, в особенности, отладки.
Для того, чтобы Git обеспечил согласование вашего локального репозитория с его братом-близнецом на сервере Locum, нужно определить точку синхронизации. Это не является обязательным пунктом, ведь оба репозитория являются полноценными, и возможность согласования — всего лишь приятная возможность. В системе Git точки синхронизации называются remotes
и являются именованными. Как правило, единственная точка синхронизации носит гордое имя origin
.
% git remote add origin ssh://hosting_ПОЛЬЗОВАТЕЛЬ@ВАШ_СЕРВЕР.locum.ru/home/hosting_ПОЛЬЗОВАТЕЛЬ/git/meet.git
Теперь попробуем впервые отправить наши данные на сервер. В терминологии Git это зовётся push
. При этом необходимо указать целевую точку синхронизации и название ветке, в которую публикуются изменения. По-умолчанию все данные в Git лежат в ветке master
.
% git push -u origin master
Counting objects: 3, done.
Writing objects: 100% (3/3), 211 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
To ssh://hosting_ПОЛЬЗОВАТЕЛЬ@ВАШ_СЕРВЕР.locum.ru/home/hosting_ПОЛЬЗОВАТЕЛЬ/git/meet.git
* [new branch] master -> master
Branch master set up to track remote branch master from origin.
Команда push
вызвана с ключом -u
, который заставляет Git запомнить, что вы предпочитаете делать push
и обратный ему процесс pull
в ветке master
точки синхронизации origin
. С этого момента никаких дополнительных параметров для команд git push
и git pull
вам не понадобится.
Кстати, если после выполнения последней команды вы увидели аналогичный результат в вашем терминале, то Git функционирует корректно. Для того, чтобы это проверить, попробуем выполнить клонирование (скачивание) новоиспечённого репозитария. Попробуйте выполнить эту команду, находясь в какой-либо директории, не содержащей каталог meet-git
:
% git clone 'ssh://hosting_ПОЛЬЗОВАТЕЛЬ@ВАШ_СЕРВЕР.locum.ru/home/hosting_ПОЛЬЗОВАТЕЛЬ/git/meet.git'
Cloning into meet-git...
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (3/3), done.
Удалось? Поздравляем, у вас теперь есть собственный приватный Git-репозиторий, в котором вы можете самостоятельно заниматься разработкой вашего проекта, не беспокоясь о сохранности исходного кода. Удачи!
Для дальнейшего чтения мы можем посоветовать русскоязычный перевод книги Pro Git.
P.S. Кстати, если вам нужно подключить к репозиторию своих сотрудников, то просто пропишите их публичные SSH-ключи в конец списка авторизованных ключей (см. выше) и попросите выполнить git clone с известным вам адресом.
[…] ← Создаем Git-репозиторий на Locum.ru […]
К постскриптуму вопрос — если я добавлю ключи сотрудников — они также получат полный доступ по SSH ко всему хостингу?
Михаил, да сотрудники получат полный доступ ко всем файлам и каталогам.