Ответ
Конфликт слияния в Git возникает, когда система не может автоматически объединить изменения из разных веток. Основные причины:
- Конкурирующие изменения в одних и тех же строках файла — разные ветки модифицировали одинаковые участки кода.
- Удаление файла в одной ветке при его изменении в другой — одна ветка удаляет файл, а другая вносит в него правки.
- Расхождение в истории коммитов — например, когда одна ветка была перебазирована (rebased), изменив хеши коммитов.
Пример конфликта в коде:
// Файл greeting.js после попытки слияния
<<<<<<< HEAD (Current Change)
const greeting = "Hello, world!";
=======
const greeting = "Привет, мир!";
>>>>>>> feature-branch (Incoming Change)
Как разрешить:
- Открыть файл с конфликтом.
- Выбрать нужную версию (или скомбинировать изменения).
- Удалить маркеры конфликта (
<<<<<<<,=======,>>>>>>>). - Выполнить
git add <файл>иgit commitдля завершения слияния.
Профилактика: Частые мерджи из основной ветки, использование перебазирования для поддержания линейной истории и согласованные правила работы с кодом в команде.