АКЦИЯ: бесплатные месячные курсы по созданию сайтов
на выбор: верстка, JavaScript, PHP, Python и фреймворки. Сегодня последний день для записи! Жми!
⊗gtPmBrMC 39 of 66 menu
Бесплатные курсы по Git. Начинаем, когда соберется 1000 желающих:) Жми для записи!

Конфликт при слиянии веток в 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

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

enru