Запрет автоматического решения конфликтов
Пусть есть 3 ветки:
- master
- MR-1
- MR-2
- Из ветки MR-1 открывается мёрдж-реквест в ветку master. Изменение в файле x.yaml на строке 1. Мердж-реквест висит
- Из ветки MR-2 открывается мёрдж-реквест в ветку master. Изменение в файле x.yaml на строке 2. Мердж-реквест вмёрдживаем
- Открываем MR-1 и видим, что он не имеет конфликтов. Хотя, в мастере есть изменения на строке 2, которых нет в ветке MR-1.
Почему в данном случае не происходит конфликтов и как их вызвать?
Данный кейс рассматривается в рамках гитлаба и он очень важен, когда 2 разработчика внесли изменения версий контейнеров в docker-compose.yml. При это последнему из них крайне важно знать, что в мастере произошли изменения.
Ответы (1 шт):
У git merge есть опция --ff-only, она не позволит вмержить ветку в мастер (например), если ветка не начата напрямую от текущего мастера.
Гитлаб поддерживает эту настройку, в вашем случае он не позволит смержить MR-1 и предложит сделать ребейз. Ребейз пройдёт автоматически без конфликтов, но это хотя бы даст разработчику понимание того, что код в мастере был обновлен и надо бы посмотреть последние коммиты