Files

3.0 KiB

Разрешение конфликтов слияния (Merge Conflicts)

Конфликт слияния возникает, когда два инженера одновременно редактируют одни и те же строки в одном и том же файле, и Git не может автоматически решить, чью версию сохранить. В Enterprise-разработке умение правильно разрешать конфликты — ключевой навык.

1. Как обнаружить конфликт?

При попытке слить ветку main в вашу рабочую ветку (или при выполнении git pull) вы можете увидеть сообщение:

CONFLICT (content): Merge conflict in filename.txt
Automatic merge failed; fix conflicts and then commit the result.

С этого момента Git находится в специальном состоянии "слияния". Вы не можете делать новые коммиты, пока не разрешите конфликт.

2. Понимание маркеров конфликта

Если вы откроете конфликтующий файл в редакторе кода (например, VS Code), вы увидите специальные маркеры:

<<<<<<< HEAD
Код из вашей текущей ветки
=======
Код из ветки, которую вы пытаетесь влить (например, main)
>>>>>>> main

3. Разрешение конфликта

Вам как инженеру нужно вручную удалить все маркеры (<<<<<<<, =======, >>>>>>>) и оставить только итоговый правильный код. Это может быть ваш вариант, вариант коллеги или их грамотная комбинация.

Современные IDE (VS Code, PHPStorm) имеют встроенные инструменты (Merge Conflict GUI), которые предлагают удобные кнопки: "Accept Current Change", "Accept Incoming Change" или "Accept Both Changes". Мы рекомендуем использовать их для минимизации ошибок.

4. Фиксация результата

После того как вы отредактировали файл и убедились, что код работает:

  1. Добавьте файл в индекс, чтобы сказать Git, что конфликт решён:
    git add filename.txt
    
  2. Завершите процесс слияния коммитом (обычно Git уже подготовит сообщение для вас):
    git commit
    

Теперь ваша ветка актуализирована, и вы можете безопасно продолжать работу или открывать Pull Request!