Ответ
Конфликт слияния (merge conflict) при git pull возникает, когда вы и другой разработчик изменили одни и те же строки в одном и том же файле, и Git не может автоматически разрешить, какое изменение применить.
Типичный сценарий:
- Вы изменяете файл
service.pyв своей локальной ветке и делаете коммит. - Тем временем другой разработчик изменяет те же строки в
service.pyв удалённой ветке (origin/main) и выполняетgit push. - Когда вы делаете
git pull(что равносильноgit fetch+git merge), Git обнаруживает конфликт.
Как выглядит конфликт:
$ git pull origin main
Auto-merging service.py
CONFLICT (content): Merge conflict in service.py
Automatic merge failed; fix conflicts and then commit the result.
Файл service.py будет содержать специальные маркеры:
def calculate():
<<<<<<< HEAD
result = a + b # Ваша локальная версия
=======
result = a * b # Версия из удалённого репозитория (origin/main)
>>>>>>> commit-hash-from-origin
return result
Разрешение конфликта:
- Вручную отредактируйте файл, выбрав нужные изменения или скомбинировав их.
- Удалите маркеры
<<<<<<<,=======и>>>>>>>. - Выполните
git add service.py, чтобы отметить конфликт как разрешённый. - Завершите слияние командой
git commit.