Главная | Документаци для разраотчиков | Стандартные команды при работе с репозиторием (git)

Стандартные команды при работе с репозиторием (git)

В данном разделе мы собрали решение типовых задач, которые могут вам при работе с git репозиторием. В своих проектах мы используем обычную сборку git и GitLab. Поэтому в данных примерах могут быть примеры описанные при работе с данными программами.

Генерация и настройка ключей git для деплоя

  1. Для того чтобы сгенерировать deploy key, нужно подключиться к серверу по ssh. Затем выполнить команду ssh-keygen.
  2. В консоли появится диалог, в котором нужно будет ввести название файла, где будет сохранен ключ. Этот шаг можно пропустить, тогда ключ будет сохранен в файл с именем по умолчанию (id_rsa).
  3. После этого будет предложено ввести кодовую фразу для дополнительной защиты, этот шаг можно пропустить (чтобы не вводить фразу каждый раз, когда идет обращение к гиту).
  4. После этого ключ будет сгенерирован, и будет создано 2 файла с приватным и публичным ключами.Теперь нужно лишь скопировать публичный ключ и добавить его в гит репозиторий. Выполняем команду cd ~/.ssh и переходим в директорию, где сохранен наш ключ. Для того чтобы вывести его в консоль, выполняем команду cat <имя файла> (по умолчанию id_rsa.pub). ОБратите внимание, что нужен именно файл с расширением .pub (публичный ключ). Копируем содержимое файла.
  5. Далее в GitLab можно настроить репозитория.
    Настройка репозитория
    1. А в разделе настроек выбрать пункт Deploy keys.
      Создание нового ключа
    2. Далее нажимаем “New Deploy Key” и попадаем в форму создания нового ключа. Вставляем ключ в поле Key, заполняем название (Title) ключа (в названии желательно указать имя пользователя и ip сервера, где был сгенерирован ключ).

Обновление проекта на git с сервера

Данная действие требуется, когда на сервере, где установлен проект, вносились правки напрямую (например, через sftp или ssh, а не через git).
Для обновления необходимо проделать следующие операции:

  1. Подключиться к серверу, на котором уже развернут проект, подключение производим через SSH.
  2. Убедиться, что мы находимся в нужной ветке, для этого вводим команду - “git branch”. Мы находимся в ветке “master”.
  3. Далее вводим команду - “git status”.
  4. Далее нужно убедиться в том, что есть изменения в файлах. Обычно Git помечает их красным цветом.
  5. Эти файлы необходимо добавить к индексируемым, следовательно вводим команду - “git add .” “Точка” говорит нам о том, что будут добавлены все файлы. Либо можно добавлять файлы через пробел “git add file1.php file2.php”.
  6. Снова проверяем статус репозитория “git status”, добавленные файлы должны быть быть отмечены зеленым цветом.
  7. Затем можно создать коммит - “git commit -m ‘your message here’”.
  8. Далее делаем “git pull origin master”, принимаем изменения из удаленного репозитория той ветки, в которой находимся.
  9. Далее отправляем наши изменения той ветки, в которой находимся - “git push origin master”.
  10. Проверяем статус локального репозитория - “git status”, в ответ получаем “On branch master. nothing to commit, working directory clean”.

Какие ветки создавать на новые проекты

Для работы над новым проектом по умолчанию git создаёт ветку master. Если у проекта будет 2 версии (тестовая и боевая), то вам перед началом разработки необходимо создать новую ветку - dev. Для этого нужно:

  1. Либо создать ветку с именем dev, локально выполнив команду “git checkout -b dev” находясь в ветке master;
  2. Либо создать новую верстку в репозитории посредством GitLab: Project - Branches - New Branch.

Как залить обновления на сервер с git

Если проект имеет только боевую версию (prod):

  1. Подключаемся по ssh (вводим логин, пароль, хост).
  2. Переходим в директорию с проектом cd (обычно cd var/www/site.ru - если не знаете, то уточните у Менеджера).
  3. Выполняем команду “git pull”.

Если проект имеет 2 версии: dev (тестовую версию) и prod (боевой проект)

Если у нас используется 2 версии проекта, то обновления заливаются в 2 ветки: dev и prod.

  1. Для выгрузки обновления подключаемся по ssh (вводим логин, пароль, хост).
  2. Переходим в директорию с тестовым или боевым проектом cd (обычно cd var/www/dev.site.ru или var/www/site.ru - если не знаете, то уточните у Менеджера).
  3. Далее проверяем, что мы находимся в dev ветке, для этого выполняем команду git branch, в результате получаем master или dev (если увидели не то, то выполняем команду для переключения в нужную ветку “git checkout <ветка>”).
  4. Если вы находитесь в нужной ветке, то выполняете “git pull”.

Создание master и dev веток
Создание master и dev веток
Создание master и dev веток

Как откатить коммит?

Если требуется отменить изменения в уже созданном коммите, допустим, вы что-то забыли дописать в коде, то нужно выполнить:

  1. Внимание! Данная операция не затронет внесённых изменений.
  2. Выполняем команду “git reset —soft HEAD^”.
  3. Отменяется последний коммит, далее мы вносим изменения в коде.
  4. Далее создаем новый коммит командой “git commit -m ‘add some code’ ”.
  5. И отправляем изменения в репозиторий командой “git push origin master”.

Если требуется откатить залитые правки до предыдущего коммита, то нужно выполнить:

  1. Осторожно! Эта команда безвозвратно удаляет несохраненные текущие изменения.
  2. Для начала нужно узнать хэш последнего коммита. Для этого выполняем команду “git show-ref —heads —hash master”.
  3. Далее вводим команду “git revert e882466”, где e882466 - первые 7 символов хэша текущего коммита.
  4. Далее нужно подтвердить откат коммита. Нужно ввести название коммита или оставить уже введенный автоматически текст Revert “add one more object” (это пример).
  5. Далее отправляем коммит в репозиторий командой “git push origin master” (если текущая ветка master).

Как перенести новый проект клиента в свой git?

В том случае, если проект редактировался напрямую через ftp или ssh, то требуется обновить версию проекта, размещенного на git. Для этого необходимо выполнить следующие шаги:

  1. Необходимо получить исходные файлы проекта, путем скачивания через FTP-клиент на свой компьютер.
  2. Необходимо получить базу данных проекта. Обычно выкачивается через через PhpMyAdmin, через SSH командой mysqldump или с помощью поддержки системного администратора (можно уточнить у Менеджера).
  3. Далее нужно сообщить Менеджеру, чтобы он создал новый репозиторий в GitLab для данного проекта.
  4. Далее клонируем пустой репозиторий к себе на локальный компьютер, например, в папку C:\Projects\foobar с помощью команды ‘git clone полный-путь-до-репозитория.git ’.
  5. Скачанный проект нужно поместить в папку с клонированным пустым репозиторием (который находится, например, в папке C:\Projects\foobar).
  6. Создать файл .gitignore и указать там необходимые файлы и директории, которые не должны попасть в git.
  7. Далее нужно отправить в гит файлы проекта, выполнив команду “git push origin master”.
  8. Далее нужно запросить у Менеджера доступный для это проекта домен (или поддомен) для разработки, а также доступы к SSH сервера, доступы для подключения к СУБД и выделенную базу данных для этого проекта, на котором будет вестись доработка проекта или обычное расположение.
  9. Необходимо зайти на сервер под полученными доступами SSH
  10. Начать развертывание проекта из git.
    1. Перейти в указанную Менеджером папку с поддоменом с помощью команды cd (обычно cd var/www/site.ru).
    2. Сгенерировать и настроить deploy keys (см. пункт 1).
    3. Выполнить команду ‘git clone полный-путь-до-репозитория.git ’.
    4. Заказать на сервер дамп базы данных с помощью команды scp с указанием размещения на сервере пути для дампа БД (она похожа на команду ssh).
    5. Развернуть дамп БД на сервере выполнить mysql -u USER -pPASSWORD DATABASE < /path/to/dump.sql.
    6. Если проект основан на фреймворке (Yii2, Symfony ¾, Laravel, Zend или другой), то необходимо подтянуть зависимости PHP пакетов (расширений).
    7. Нужно установить composer.phar в папку проекта, выполнив команды, указанные по этому адресу https://getcomposer.org/download/.
    8. Выполнить команду composer.phar update.
    9. Загрузить файлы и директории, которые ранее добавили в .gitignore.
    10. Проверить работоспособность проекта, пройдя по поддомену/домену.