Вопрос с собеседования · DevOps

Как разрешить конфликт слияния в Git?

JuniorCI/CD и Git
Ещё спрашивают так:
  • Что означают <<<<<<< и >>>>>>> в файле?
Коротко

Конфликт — обе ветки изменили одни и те же строки, и Git не знает, что оставить. В файле появляются маркеры: между <<<<<<< и ======= — ваша версия, между ======= и >>>>>>> — входящая. Нужно понять смысл обоих изменений, собрать правильный итог (часто — комбинацию), удалить маркеры, затем git add и продолжить (git commit или git rebase --continue). После — собрать проект и прогнать тесты: код без маркеров ещё не значит рабочий.

  • Не выбирать «свою версию» не глядя — так теряют чужую работу
  • Редактор и IDE показывают конфликт в три колонки — удобнее
  • Частые небольшие слияния — меньше и проще конфликты

А ещё Если запутались — git merge --abort или git rebase --abort вернёт состояние до начала

Подробно

Пример:

<<<<<<< HEAD
timeout = 10
=======
timeout = 30
retries = 3
>>>>>>> feature/retries

Нужно выяснить, почему каждая сторона менялась. Возможно, верный итог — timeout = 30 и retries = 3, а возможно — обсудить с автором изменения.

Порядок: разрешить все файлы (git status покажет), git add, завершить слияние, запустить тесты, push.

Что хотят услышать

  • Почему возникает конфликт и что значат маркеры.
  • Осмысленное объединение, а не выбор стороны.
  • add и продолжение, проверка тестами.
  • abort как выход.

Проверьте себя

Один верный вариант. Подумайте, потом откройте ответ.

Показать варианты и ответ
  • ✓Понять обе стороны, собрать итог без маркеров, git add, завершить слияние и прогнать тесты
  • ✗Всегда принимать свою версию, чтобы не сломать свой код
  • ✗Удалить маркеры конфликта, оставив обе версии кода, и сразу отправить — Git сам проверит корректность
  • ✗Конфликт можно решить только удалив ветку

Разбор темы

Связанные вопросы

Партнёр платформы

Разбор собеседования с sotto

После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.

Разбор собеседования