Skip to content

Решение конфликтов

Конфликт при обновлении шаблона — нормальная ситуация. Важно не то, что конфликт возник, а где он возник.

Правильное место для конфликтов — временная ветка sync/*.

Пример

Шаблон поменял строку в README.md:

text
Base template version: template-conflict-v10

Приложение поменяло ту же строку иначе:

text
Base template version: application-conflict-v10

При merge origin/template в sync/update-template-v10 появится конфликт:

text
<<<<<<< HEAD
Base template version: application-conflict-v10
=======
Base template version: template-conflict-v10
>>>>>>> origin/template

Это правильное место конфликта: master ещё не изменён, template остаётся чистой, а итоговое решение можно проверить в PR/MR.

Как решать

  1. Оставайтесь в ветке sync/*.
  2. Разберите конфликт по смыслу: что должно остаться в приложении после обновления шаблона.
  3. Удалите conflict markers.
  4. Проверьте проект локально.
  5. Закоммитьте результат.
bash
git status
git add .
git commit

Что нельзя делать

Нельзя переносить conflict resolve в template.

template должна совпадать с шаблоном. Если решение конфликта попадёт туда, она перестанет быть эталоном и дальнейшие обновления станут менее предсказуемыми.

Нельзя решать конфликт прямо в master, потому что основная ветка приложения должна получать только проверенный результат через PR/MR.

Что проверить после resolve

Посмотрите статус:

bash
git status

Посмотрите diff относительно текущего приложения:

bash
git --no-pager diff origin/master...HEAD

Посмотрите граф:

bash
git --no-pager log --oneline --graph --decorate --all --max-count=50