Работа с 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