Katsu837 / 3Data_task

https://3-data-task.vercel.app
0 stars 0 forks source link

Git конвенции (теория) #9

Open justWalsdi opened 3 weeks ago

justWalsdi commented 3 weeks ago

Git конвенции

Из-за такого что нас целых миллион человек на одном проекте, мы используем следующий подход в работе с гитом, гитлабом в нашем случае в том числе.

Ветки

  1. Ветка main/master, в неё отправляются стабильные изменения путем merge request'а из dev ветки. После пуша туда выкладывается проект в прод, поэтому лучше бы там не было никаких ошибок.
  2. Ветка dev, ветка в которой ведется основная разработка путем создания новых веток от неё. После пуша версия выкладывается на дев версию проекта. Напрямую коммитить стоит только если изменения слишком мелкие для открытия issue/hot fix'ы нужны прям щас. Оно потом ОКАЖЕТСЯ В master, поэтому там стараемся не мусорить.

Работа с задачами

На каждую задачу обычно открываются issue, где описывается что требуется сделать (детальность не обязательна). После этого создается новая ветка в соответствии с конвенциями, описанными ниже и открывается merge request через интерфейс гитлаба (опционально но удобно)

image

и уже на эту ветку переходим и работаем с ней

git fetch origin
git switch your_branch_name

После завершения работ смотрим что merge request прошел CI/CD и в некоторых случаях просим коллег проверить что не написали чертовщину (у всех бывает)

Конвенции

  1. Ветки для выполнения задач называются следующим образом:
    1. feat/issue-name: добавляем новую фичу, страницу, дополнительные элементы на существующих страницах
    2. fix/issue-name: фиксим уже существующее
    3. chore/issue-name: чиним правила eslint, меняем форматирование, удаляем лишнее. Сюда подпадает в некоторых случаях рефактор, если он был не особо большой (переместил элементы туда сюда)
    4. refactor/issue-name: серьезная переработка уже существующее компонента.
  2. При merge request'е из твоей ветки в dev нужно выбирать удаление бренча (если мы закончили работу, обычно можно удалить и создать новый если требуется что-то еще и об этом узнали постфактум) и Squash (слить все коммиты в один, порой требуется несколько коммитов для работы фичи, а в dev нам это уже знать не очень нужно) image

[!WARNING] При merge реквесте из dev в master мы не удаляем и не сквошим ничего - это создает конфликты.

justWalsdi commented 3 weeks ago

Пока мы сидим-кайфуем на гитхабе - при коммитах, которые обращены на фиксы каких-то issues добавляй в текст сообщения #номеркоммита. Например:

git commit -am "fixed form login bug #6"