Как разрешить конфликт слияния в 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 сам проверит корректность
- ✗Конфликт можно решить только удалив ветку
Разбор темы
- Git — ветки, коммиты и отмена изменений
Как работать в ветке от первого коммита до push, чем merge отличается от rebase, как отменять изменения и разрешать конфликты.
Связанные вопросы
Разбор собеседования с sotto
После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.