Конфликты слияния

Конфликты слияния (Merge Conflicts) в Git возникают, когда Git не может автоматически объединить изменения из двух веток, потому что изменения касаются одних и тех же строк в одном файле или затрагивают один и тот же участок кода.


Причины конфликтов

  1. Две ветки изменили одни и те же строки в файле.

  2. Одна ветка удалила файл, который другая ветка изменила.

  3. Изменения пересекаются в логике или структуре кода, и 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 — ветка, которую пытаются слить.

  • Между <<<<<<< и ======= — код текущей ветки, между ======= и >>>>>>> — код ветки, которую сливают.


Как разрешать конфликты

  1. Открыть файл и выбрать, какой код оставить, или объединить вручную.

  2. После исправления отметить конфликт как решённый:

git add <filename>
  1. Завершить слияние:

git commit

или, если это был cherry-pick:

git cherry-pick --continue

Итог: Конфликт слияния — это сигнал Git о том, что нужна ручная проверка и выбор правильного варианта изменений, чтобы сохранить целостность кода.

Last updated

Was this helpful?