# Конфликт при слиянии веток в Git

В процессе слияния двух веток возможны конфликты, если в каждой из веток мы изменяли один и тот же файл. Рассмотрим ситуацию, когда в обоих ветках `master` и `test` из предыдущего урока мы изменили и сделали коммит на один тот же файл `file.txt`. А затем применили команду слияния:

`git merge test`

В результате увидим ошибку:

`Auto-merging file.txt CONFLICT (content): Merge conflict in file.txt Automatic merge failed; fix conflicts and then commit the result.`

Кроме того, в изменяемом файле мы увидим маркеры конфликта:

`<<<<<<< HEAD тут будут написаны изменения ветки master ======= тут будут написаны изменения ветки test >>>>>>> test`

В верхней части сообщения указаны изменения, сделанные в основной на данный момент ветке, в нижней части - во второй ветке, которую мы хотим слить с первой. Для разрешения конфликта нам необходимо привести содержимое файла к общему виду, предварительно удалив (руками в редакторе!) все обозначения конфликта, которые оставил в нем Git.

После того, как мы разрешим конфликт (то есть оставим правильный код в файле), проиндексируем наш файл и сделаем коммит в ветке `master`, в которой мы сейчас находимся:

`git add file.txt git commit -m "слияние"`

Только после этого мы можем переключиться на вторую ветку `test` и проделать все те же операции, что и в ветке `master`, в том числе и заменить содержимое файла `file.txt` на то же, что и в первой ветке:

`git add file.txt git commit -m "слияние"`

Теперь мы можем снова переключиться на основную ветку и влить в нее вторую:

`git switch master git merge test`

Намеренно создайте конфликт при слиянии веток. Затем разрешите его.

← →
↑