Как подключить Git на своём удаленном сервере

Admin GIT

В примере ниже создаём отслеживание изменений на сервере с помощью GIT. Это никак не связано с сайтом GITHUB. Можно использовать контроль версии без этого и похожих сайтов. Всё необходимое будет на локальной машине и на удаленном сервере.

На удаленном сервере

Устанавливаем GIT на свой удаленный сервер. Устанавливаем через Терминал (консоль).

В CentOS это делается так:

yum install git

Команда для проверки версии:

git --version

Теперь создаём директорию, в которой будут отслеживаться изменения и храниться настройки GIT. Пути приведены для панели управления сайтом VESTA. У вас могут быть другие пути. Сайт соответственно меняем на свой.

cd /home/admin/web/

Создаём новую директорию, например:

mkdir git.ploshadka.net

Переходим в неё:

cd git.ploshadka.net

Вводим команду инициализации GIT для этой директории:

git init --bare

После этой команды, в папке test появится много новых файлов. Заходим в папку hooks.

cd hooks

Создаём в этой же папке новый файл:

nano post-receive

Это bash (shell) скрипт.

Записываем следующее содержимое в него:

#!/bin/sh
git --work-tree=/home/admin/web/ploshadka.net/public_html/test --git-dir=/home/admin/web/ploshadka.net/git checkout -f

work-tree — это то место куда будут записывать измененные файлы на сервер
git-dir — это место, где мы инициализировали GIT (настройки и файлы слежения)

Сохраняем файл и выходим из него.

Добавляем этому файлу необходимые права доступа:

chmod +x post-receive

На локальном компьютере

Переходим в папку, где находится наш сайт. Например:

cd sites/ploshadka.net

Точно также, как на сервере, инициализируем эту папку, похожей командой:

git init

Затем добавляем адрес папки сервера, в которой мы инициализировали GIT этапом ранее:

git remote add live ssh://root@123.123.111.1/home/admin/web/git.ploshadka.net/

Теперь всё готово для работы.

Изменяем какой-нибудь файл, на локальной машине, для примера. А затем:

Добавляем изменения в GIT:

git add .

или

git commit -m "new edits"

С помощью этой команды можно проверить статус файлов (проверка, не обязательна)

git status

Теперь отправляем изменения на сервер:

git push live master

(Вводим пароль. Можно без ввода пароля, если создать ssh ключ).

Исправление ошибок

Если возникает ошибка:

remote: error: cannot run hooks/post-receive: No such file or directory

Значит в файле post-receive указан неверный формат адреса к скрипту. Ошибка может находится в этом месте:

#!/bin/sh

Откат изменений

Допустим мы внесли неправильные изменения и хотим откатить назад. Тогда вводим команду:

git log

После которой видны хеши измененных этапов. Выбираем нужный. К примеру, мы хотим откатить до предыдущего изменения. Тогда указываем нужный нам хеш:

git revert 5e6dsf4674beb3dfc54f057e52150c4c76

У сайта нет цели самоокупаться, поэтому на сайте нет рекламы. Но если вам пригодилась информация, можете лайкнуть страницу, оставить комментарий или отправить мне подарок на чашечку кофе.

Комментарии к статье “Как подключить Git на своём удаленном сервере” (5)

  • Head
    28.06.2018 в 22:36

    Vesta наше всё. Ну, или почти всё. Git в ней из коробки нету 🙂
    Вроде всё понятно, но. Если я правильно понял, описанный вами пример работает при условии одного репо. А если на vps несколько сайтов проектов и у каждого свой реп — между ними переключаться? Или live — это имя репа?

    • Admin
      Автор записи
      29.06.2018 в 12:36

      Для каждого отдельного сайта создаётся свой гит. Все файлы его настроек лежат в отдельной папке каждого сайта, как на локальном компьютере, так и на удаленном.

      Во время работы с гитом для каждого сайта, достаточно переключиться в консоли на него, т.е. перейти в его папку: cd sites/site1

      Иными словами все процедуры повторяются для всех сайтов, кроме установки Git-а в систему.

      • Head
        29.06.2018 в 21:56

        Ясно, вопрос не понят. Я имел в виду как пуш (правильно выразился?) делать — у меня на локальном сервере куча проектов, которые я шлифую, а на ВПС они же «живые» (а иногда просто хочется бэкап репа иметь). Соответственно выгружать на сервер нужно не в один реп, а каждый в свой. Сейчас гитом пользуюсь локально, а на продакшн заливаю по ftp. Не то чтобы сильно напрягает, но хочется большего 🙂

      • Head
        29.06.2018 в 22:17

        Стоп. Я кажется понял. Для каждого проекта лайв прописывается в его локальных настройках и при пуше соответственно улетает по этому пути. Так?

        • Admin
          Автор записи
          30.06.2018 в 14:29

          Всё верно. Вы переходите через терминал в директорию сайта на локальном компьютере, там запускаете инициализацию git и команду git remote add live с конкретным путем на сервере. В результате каждый сайт имеет свою отдельную директорию на сервере.

Добавить комментарий

Напишите свой комментарий, если вам есть что добавить/поправить/спросить по теме текущей статьи:
"Как подключить Git на своём удаленном сервере"