Работа с Git на хостинге

Git — это система контроля версий для разработки и поддержки проектов. В статье мы рассмотрим, как создать репозиторий и настроить подключение к удаленному репозиторию на GitHub.

На тестовом периоде подключиться к удаленному репозиторию не получится. Пока вы на тестовом периоде, все порты на исходящие соединения закрыты, кроме портов 80 и 443 (см. Правила и ограничения на хостинге).

Все команды в статье нужно выполнять после подключения по SSH.

Настройка Git на хостинге

Поставьте свое имя пользователя и почтовый адрес. Так вы сможете указать автора коммитов в репозитории.

git config --global user.name "имя_пользователя"
git config --global user.email "test@example.com"

Также ограничьте число потоков для упаковки объектов. Она срабатывает, когда в репозитории много неупакованных объектов или когда вы отправляете изменения командой push:

git config --global pack.threads "1"

Их можно поставить побольше, но учитывайте, что на хостинге можно держать максимум 40 процессов одновременно (см. Правила и ограничения на хостинге).

Без этой настройки Git может попробовать использовать все ядра системы, и займет все доступные процессы. Вы увидите ошибку «Resource temporarily unavailable» или «Cannot fork».

Создание репозитория

Перейдите в директорию, где вы хотите создать репозиторий. Например, в корень сайта:

cd сайт/public_html

Создайте репозиторий. Эта команда создаст подкаталог .git с необходимыми файлами.

git init

Добавьте нужные файлы в индекс, в коммит попадут только выбранные файлы.

git add . # добавить все файлы в текущем каталоге
git директория # добавить директорию
git директория/файл # добавить один файл из директории

Проверьте, какие файлы добавлены в индекс и какие исключены.

git status

Когда будете готовы, сделайте комит.

git commit -m 'first commit'

Подключение удаленного репозитория Github

Мы предполагаем, что вы уже зарегистрировались в GitHub. Дальше рассмотрим, как соединить удаленный репозиторий с хостингом.

Шаг 1. Добавление ключа в GitHub

Пара ключей нужна, чтобы безопасно авторизоваться в GitHub без пароля. Вы создадите публичный и приватный ключ — публичный можно отправлять кому угодно, приватный нужно держать у себя.

Создайте ключи командой ниже. На все вопросы команды можете отвечать значениями по умолчанию.

ssh-keygen -t rsa

После этого скопируйте содержимое публичного ключа, по умолчанию он называется id_rsa.pub. Вывести его можно командой:

cat ~/.ssh/id_rsa.pub

Добавьте ключ в свой аккаунт GitHub в разделе Settings – SSH and GPG keys – New SSH key.

Шаг 2. Проверка подключения к GitHub

Пока что мы просто протестируем, что ключ работает. Выполните команду:

ssh -T git@github.com

На вопрос «Are you sure you want to continue connecting (yes/no)?» напишите «yes». Если вы создавали парольную фразу на этапе создания ключа, введите её тоже.

Если подключение было успешное, вы увидите сообщение:

Hi USERNAME! You've successfully authenticated, but GitHub does not provide shell access.

GitHub не пропустит вас в командную оболочку, это нормально. Важно, чтобы вы увидели в сообщении свое имя пользователя, а не ошибку «Permission denied».

Шаг 3. Подключение к удаленному репозиторию

Теперь мы добавим удаленный репозиторий и загрузим в него изменения. Перед этим создайте новый репозиторий в GitHub, он может быть публичный или приватный.

Скопируйте из GitHub ссылку на репозиторий. Ссылки могут быть двух типов:

  • Такая не подойдет: https://github.com/пользователь/репозиторий.git
  • Вам нужна такая: git@github.com:пользователь/репозиторий.git

От ссылки зависит, как GitHub будет вас авторизовывать. Так как вы создали SSH-ключ, вам подойдет именно вторая ссылка.

Добавьте удаленный репозиторий следующей командой:

git remote add origin git@github.com:пользователь/репозиторий.git

После этого вы можете отправить свою локальную ветку в удаленный репозиторий:

git push -u origin master