Запрет автоматического решения конфликтов

Пусть есть 3 ветки:

  • master
  • MR-1
  • MR-2
  1. Из ветки MR-1 открывается мёрдж-реквест в ветку master. Изменение в файле x.yaml на строке 1. Мердж-реквест висит
  2. Из ветки MR-2 открывается мёрдж-реквест в ветку master. Изменение в файле x.yaml на строке 2. Мердж-реквест вмёрдживаем
  3. Открываем MR-1 и видим, что он не имеет конфликтов. Хотя, в мастере есть изменения на строке 2, которых нет в ветке MR-1.

Почему в данном случае не происходит конфликтов и как их вызвать?

Данный кейс рассматривается в рамках гитлаба и он очень важен, когда 2 разработчика внесли изменения версий контейнеров в docker-compose.yml. При это последнему из них крайне важно знать, что в мастере произошли изменения.


Ответы (1 шт):

Автор решения: Василиса

У git merge есть опция --ff-only, она не позволит вмержить ветку в мастер (например), если ветка не начата напрямую от текущего мастера.

Гитлаб поддерживает эту настройку, в вашем случае он не позволит смержить MR-1 и предложит сделать ребейз. Ребейз пройдёт автоматически без конфликтов, но это хотя бы даст разработчику понимание того, что код в мастере был обновлен и надо бы посмотреть последние коммиты

→ Ссылка