Skip to content

Соглашение по работе с Git

Alexey Chudinov edited this page Sep 19, 2015 · 16 revisions

Соглашения по работе с Git

1. Работа с Git

1.1 Разворачиваем уже имеющийся проект

  • git clone <url> - клонируем проект.

1.2 Повседневная работа с проектом

  • git pull --rebase origin master - обновляем ветку master с ключём --rebase, чтобы избежать промежуточных коммитов.
  • Если конфликтов не произошло, то пропускаем этот пункт. Если есть, то правим руками (см. п. 3.4).
  • Делаем изменения в коде, например, добавляем главную страницу.
  • git add -A - индексируем изменения.
  • git commit -m 'feat #100: добавил главную страницу' - закоммитили в соответствии с соглашением по коммитоименованию.
  • git push origin master - заливаем изменения в удалённый репозиторийй в ветку master.

1.3 Разрешаем конфликты

  • Правим руками файлы, содержащие конфликты (посмотреть их можно через git status):
<<<<<<< HEAD
// 1 секция: Код текущей ветки
=======
// 2 секция: Наш изменения в коде
>>>>>>> master

Чтобы разрешить конфликт, нужно оставить только 2-ю секцию:

// 2 секция: Наш изменения в коде
  • После этого индексируем изменения.
git add -A
  • Далее нужно продолжить rebase с помощью команды:
git rebase --continue
  • Если конфликтов больше нет и reabase завершился, то на это всё, если конфликты есть, то повторить итерацию.

1.4 Создаём фичу в отдельной ветке

1.4.1 Создаём ветку

Название веток указываем как feat/<name>, причем <name> пишем на русском языке.

  • git pull --rebase origin master - обновляем ветку master с ключём --rebase, чтобы избежать промежуточных коммитов.
  • git checkout -b feat/<name> - создаём ветку с feat/<name>, где <name> - название фичи.
  • Делаем изменения в коде, например, добавляем главную страницу.
  • git add -A - индексируем изменения.
  • git commit -m 'feat #100: добавил главную страницу' - закоммитили в соответствии с соглашением по коммитоименованию, обязательно указав номер задачи.
  • git push origin feat/<name> - заливаем нашу ветку в удалённый репозиторий.

1.4.2 Делаем rebase нашей фичи в основную ветку master.

  • Находясь в ветке фичи выполняем команду:
git rebase master
  • Если конфликтов нет, то пропускаем этот пункт. Если есть, то разрешаем конфликты (см. п. 3.4).
  • git push origin master - заливаем итоговые изменения в удалённый репозиторий.

1.5 Создание веток для других случаев

Если необходимо внести изменения, но при этом создание фичи не планируется, то следует назвать ветку как <type>, где <type> совпадает с типом,указанным в п. 2.2.

1.6 Полезные команды на всякий случай

  • git commit --amend - позволяет изменить название коммита. Если нужно включить ещё и изменённые файлы, то перед этим проиндексировать файлы.
  • git reset --hard HEAD^ - полное удаление последнего коммита.

2. Соглашение по именованию коммитов

2.1 Формат

Каждый коммит начинается с типа (type) и сообщения (subject).

В самом конце может быть описание (body) с замечанием и т.п.

  • type - тип изменений, который содержит коммит;
  • scope - область кода в которой сделали изменение;
  • subject - сообщение;
  • body (не обязательно) - подробно описание изменнений или важное замечание.
<type>: <subject> в <scope>
<BLANK LINE>
<body>

Примеры:

feat: добавил дополнительную валидацию в модель User 
fix: исправил баг с авторизацией в контроллере User
refactor: вынес повторяющийся код в отдельный метод findById в контроллере User

Здесь можно написать поясняющие подробности

Все коммиты пишем на русском языке, за исключением типа (type)
Каждая строка в коммите может содержать не более 100 символов

2.2 Типы

  • feat - новая фича;
  • fix - багофикс;
  • docs - изменения в документации;
  • style - форматирование кода или любые другие изменения, не влияющие на работу кода;
  • refactor - изменения в коде, которые не относятся к фиксам или фиче;
  • test - добавлен или обновлён тест;
  • chore - измененения в сборщике, зависимостях и т.п.

2.3 Сообщения

  • Первое слово с прописной буквы, не с заглавной;
  • Не ставьте точку на конце.