Каковы основные причины конфликта слияния (merge conflict) в Git?

«Каковы основные причины конфликта слияния (merge conflict) в Git?» — вопрос из категории Инструменты тестирования, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Конфликт слияния в Git возникает, когда система не может автоматически объединить изменения из разных веток. Основные причины:

  1. Конкурирующие изменения в одних и тех же строках файла — разные ветки модифицировали одинаковые участки кода.
  2. Удаление файла в одной ветке при его изменении в другой — одна ветка удаляет файл, а другая вносит в него правки.
  3. Расхождение в истории коммитов — например, когда одна ветка была перебазирована (rebased), изменив хеши коммитов.

Пример конфликта в коде:

// Файл greeting.js после попытки слияния
<<<<<<< HEAD (Current Change)
const greeting = "Hello, world!";
=======
const greeting = "Привет, мир!";
>>>>>>> feature-branch (Incoming Change)

Как разрешить:

  1. Открыть файл с конфликтом.
  2. Выбрать нужную версию (или скомбинировать изменения).
  3. Удалить маркеры конфликта (<<<<<<<, =======, >>>>>>>).
  4. Выполнить git add <файл> и git commit для завершения слияния.

Профилактика: Частые мерджи из основной ветки, использование перебазирования для поддержания линейной истории и согласованные правила работы с кодом в команде.