Конфликты слияния
Конфликты слияния (Merge Conflicts) в Git возникают, когда Git не может автоматически объединить изменения из двух веток, потому что изменения касаются одних и тех же строк в одном файле или затрагивают один и тот же участок кода.
Причины конфликтов
Две ветки изменили одни и те же строки в файле.
Одна ветка удалила файл, который другая ветка изменила.
Изменения пересекаются в логике или структуре кода, и Git не может решить, что оставить.
Как Git сигнализирует о конфликте
При попытке
git merge branch_name
илиgit cherry-pick commit_hash
Git останавливает процесс и сообщает:
CONFLICT (content): Merge conflict in <filename>
Файлы с конфликтами помечаются как неразрешённые.
Пример конфликта в файле
<<<<<<< HEAD
print("Hello from main branch")
=======
print("Hello from feature branch")
>>>>>>> feature
HEAD
— текущая ветка.feature
— ветка, которую пытаются слить.Между
<<<<<<<
и=======
— код текущей ветки, между=======
и>>>>>>>
— код ветки, которую сливают.
Как разрешать конфликты
Открыть файл и выбрать, какой код оставить, или объединить вручную.
После исправления отметить конфликт как решённый:
git add <filename>
Завершить слияние:
git commit
или, если это был cherry-pick:
git cherry-pick --continue
Итог: Конфликт слияния — это сигнал Git о том, что нужна ручная проверка и выбор правильного варианта изменений, чтобы сохранить целостность кода.
Last updated
Was this helpful?