Поиск по сайту:

Как разрешить конфликты слияния Git


Не паникуйте, столкнувшись с конфликтом слияния. С помощью небольших экспертных переговоров вы сможете разрешить любой конфликт.

Предположим, мы с вами работаем над одним и тем же файлом под названием index.html. Я вношу некоторые изменения в файл, фиксирую их и отправляю изменения в удаленный репозиторий Git. Вы также вносите некоторые изменения в тот же файл, фиксируете их и начинаете отправлять изменения в тот же репозиторий Git. Однако Git обнаруживает конфликт, поскольку внесенные вами изменения противоречат изменениям, внесенным мной.

Вот как можно разрешить конфликт:

  1. Получите и объедините последние изменения из удаленного репозитория:

    $ git pull
  2. Определите один или несколько конфликтующих файлов:

    $ git status
  3. Откройте конфликтующий файл с помощью текстового редактора:

    $ vim index.html
  4. Разрешите конфликт. Конфликтующие изменения отмечаются тегами <<<<<<< 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>
  5. Сохраните все изменения и закройте редактор.

  6. Добавьте файл в промежуточную область:

    $ git add index.html
  7. Зафиксируйте изменения:

    $ git commit -m "Updated h1 in index.html"

    Эта команда фиксирует изменения с сообщением Разрешен конфликт слияния.

  8. Отправьте изменения в удаленный репозиторий:

    $ git push

Разрешение

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

Статьи по данной тематике: