← Все вопросы

Что делать при конфликте слияния в git и как его разрешить?

Задан 21 месяц назад1.5к просмотров2 ответа
13

Сделал git merge и получил CONFLICT и «Automatic merge failed». В файлах появились странные <<<<<<< и =======. Что это и как разрешить конфликт слияния, чтобы продолжить?

2 ответа

15
✓ Принятый ответ — помог автору

Не паникуй — конфликт это нормально. Он возникает, когда в одном и том же месте файла обе ветки внесли разные правки, и git не знает, какую оставить.

Шаг 1. Посмотри, какие файлы конфликтуют:

git status

Они будут в разделе «both modified».

Шаг 2. Открой такой файл. Внутри увидишь маркеры:

<<<<<<< HEAD
твоя версия (текущая ветка)
=======
версия из вливаемой ветки
>>>>>>> feature

Твоя задача — оставить правильный итоговый код и удалить все три строки-маркера (<<<<<<<, =======, >>>>>>>). Можно взять один из вариантов, или объединить оба вручную.

Шаг 3. Помечаешь файл как решённый и завершаешь слияние:

git add конфликтный_файл.py
git commit

git add говорит git «я разрулил этот файл». Когда все конфликты добавлены — git commit завершит merge.

Если всё пошло не так и хочешь отменить слияние целиком:

git merge --abort

Частая ошибка: закоммитить, забыв удалить маркеры <<<<<<</=======. Тогда они попадут прямо в код и всё сломается. Перед git add обязательно проверь, что маркеров в файле не осталось.

5

Полезный лайфхак: многие редакторы (VS Code и др.) показывают конфликт с кнопками «Accept Current / Accept Incoming / Accept Both» прямо над блоком. Это удобнее, чем чистить маркеры руками.

Если запутался — не бойся откатиться: git merge --abort вернёт всё в состояние до слияния, и можно попробовать заново на свежую голову.

Ваш ответ

Войдите, чтобы ответить на вопрос.