Как разрешить конфликты слияния Git
Не паникуйте, столкнувшись с конфликтом слияния. С помощью небольших экспертных переговоров вы сможете разрешить любой конфликт.
Предположим, мы с вами работаем над одним и тем же файлом под названием index.html. Я вношу некоторые изменения в файл, фиксирую их и отправляю изменения в удаленный репозиторий Git. Вы также вносите некоторые изменения в тот же файл, фиксируете их и начинаете отправлять изменения в тот же репозиторий Git. Однако Git обнаруживает конфликт, поскольку внесенные вами изменения противоречат изменениям, внесенным мной.
Вот как можно разрешить конфликт:
Получите и объедините последние изменения из удаленного репозитория:
$ git pull
Определите один или несколько конфликтующих файлов:
$ git status
Откройте конфликтующий файл с помощью текстового редактора:
$ vim index.html
-
Разрешите конфликт. Конфликтующие изменения отмечаются тегами
<<<<<<< HEAD
и>>>>>>>
. Вам нужно выбрать, какие изменения сохранить, а какие отменить. Вручную отредактируйте файл, чтобы объединить конфликтующие изменения.Вот пример:
<<<<<<< HEAD<div class="header"><h1>Sample text 1</h1></div>=======<div class="header"><h1>Sample text 2</h1></div>>>>>>>> feature-branch
В этом примере я изменил заголовок веб-сайта на
Пример текста 1
, а вы изменили заголовок наПример текста 2
. Оба изменения были добавлены в файл. Теперь вы можете решить, какой заголовок сохранить или отредактировать файл, чтобы объединить изменения. В любом случае удалите маркеры, обозначающие начало и конец изменений, оставив только тот код, который вам нужен:<div class="header"><h1>Sample text 2</h1></div>
Сохраните все изменения и закройте редактор.
Добавьте файл в промежуточную область:
$ git add index.html
Зафиксируйте изменения:
$ git commit -m "Updated h1 in index.html"
Эта команда фиксирует изменения с сообщением
Разрешен конфликт слияния
.Отправьте изменения в удаленный репозиторий:
$ git push
Разрешение
Конфликты слияния — хороший повод сосредоточить изменения на коде. Чем больше вы меняете в файле, тем выше вероятность конфликта. Вам следует делать больше коммитов с меньшим количеством изменений каждый. Вам следует избегать внесения монолитных изменений, которые объединяют несколько улучшений функций или исправлений ошибок в одно. Ваш менеджер проекта тоже будет вам благодарен, потому что коммиты с четкими намерениями легче отслеживать. Конфликт слияния в Git поначалу может показаться пугающим, но теперь, когда вы знаете, как это сделать, вы увидите, что его легко разрешить.