Как решить Merge конфликт в Git

«Как решить Merge конфликт в Git» — вопрос из категории Git, который задают на 24% собеседований AQA / Automation. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Merge-конфликт в Git возникает, когда изменения в одной ветке (например, feature/login-test) противоречат изменениям в другой (например, main). Как QA-инженер, я часто работаю с ветками для тестовых сценариев или фиксов окружения. Вот мой алгоритм решения:

  1. Идентифицирую конфликтующие файлы. Git явно укажет на них после команды git merge или git pull.
  2. Открываю файл в редакторе. Конфликтующие участки будут помечены специальными маркерами:
    <<<<<<< HEAD (или ваша текущая ветка)
    // Код из текущей ветки (например, исправление локатора в тесте)
    =======
    // Код из вливаемой ветки (например, рефакторинг того же теста)
    >>>>>>> feature/login-test
  3. Анализирую и вручную редактирую. Нужно решить, какой код оставить, или скомбинировать оба изменения, удалив маркеры. В контексте тестирования важно не сломать логику теста. Пример: если в main был обновлён ID элемента, а в моей ветке — добавлена новая проверка, мне нужно сохранить оба изменения.
    // После редактирования:
    element_id = "new-button-id" // Актуальный ID из main
    assert element_is_visible(element_id) // Моя новая проверка
  4. Добавляю исправленный файл и коммичу:
    git add <имя_файла>
    git commit -m "Resolve merge conflict in test_login.py"
  5. Если всё пошло не так, откатываюсь: git merge --abort.

Перед слиянием я всегда делаю git diff, чтобы понять суть изменений, и стараюсь решать конфликты сразу, не откладывая.