Из-за такого что нас целых миллион человек на одном проекте, мы используем следующий подход в работе с гитом, гитлабом в нашем случае в том числе.
Ветки
Ветка main/master, в неё отправляются стабильные изменения путем merge request'а из dev ветки. После пуша туда выкладывается проект в прод, поэтому лучше бы там не было никаких ошибок.
Ветка dev, ветка в которой ведется основная разработка путем создания новых веток от неё. После пуша версия выкладывается на дев версию проекта. Напрямую коммитить стоит только если изменения слишком мелкие для открытия issue/hot fix'ы нужны прям щас. Оно потом ОКАЖЕТСЯ В master, поэтому там стараемся не мусорить.
Работа с задачами
На каждую задачу обычно открываются issue, где описывается что требуется сделать (детальность не обязательна). После этого создается новая ветка в соответствии с конвенциями, описанными ниже и открывается merge request через интерфейс гитлаба (опционально но удобно)
и уже на эту ветку переходим и работаем с ней
git fetch origin
git switch your_branch_name
После завершения работ смотрим что merge request прошел CI/CD и в некоторых случаях просим коллег проверить что не написали чертовщину (у всех бывает)
Конвенции
Ветки для выполнения задач называются следующим образом:
feat/issue-name: добавляем новую фичу, страницу, дополнительные элементы на существующих страницах
fix/issue-name: фиксим уже существующее
chore/issue-name: чиним правила eslint, меняем форматирование, удаляем лишнее. Сюда подпадает в некоторых случаях рефактор, если он был не особо большой (переместил элементы туда сюда)
refactor/issue-name: серьезная переработка уже существующее компонента.
При merge request'е из твоей ветки в dev нужно выбирать удаление бренча (если мы закончили работу, обычно можно удалить и создать новый если требуется что-то еще и об этом узнали постфактум) и Squash (слить все коммиты в один, порой требуется несколько коммитов для работы фичи, а в dev нам это уже знать не очень нужно)
[!WARNING]
При merge реквесте из dev в master мы не удаляем и не сквошим ничего - это создает конфликты.
Git конвенции
Из-за такого что нас целых миллион человек на одном проекте, мы используем следующий подход в работе с гитом, гитлабом в нашем случае в том числе.
Ветки
master
, поэтому там стараемся не мусорить.Работа с задачами
На каждую задачу обычно открываются issue, где описывается что требуется сделать (детальность не обязательна). После этого создается новая ветка в соответствии с конвенциями, описанными ниже и открывается merge request через интерфейс гитлаба (опционально но удобно)
и уже на эту ветку переходим и работаем с ней
После завершения работ смотрим что merge request прошел CI/CD и в некоторых случаях просим коллег проверить что не написали чертовщину (у всех бывает)
Конвенции
feat/issue-name
: добавляем новую фичу, страницу, дополнительные элементы на существующих страницахfix/issue-name
: фиксим уже существующееchore/issue-name
: чиним правила eslint, меняем форматирование, удаляем лишнее. Сюда подпадает в некоторых случаях рефактор, если он был не особо большой (переместил элементы туда сюда)refactor/issue-name
: серьезная переработка уже существующее компонента.