Skip to main content

О конфликтах слияния

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

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

Вы должны разрешить все конфликты слияния, прежде чем сможете объединить pull request на GitHub. Если в запросе на вытягивание возник конфликт слияния между ветвью сравнения и базовой ветвью, вы можете просмотреть список файлов с конфликтующими изменениями над кнопкой Слияние запроса на вытягивание. Кнопка Слияние запроса на вытягивание будет отключена, пока вы не устраните все конфликты между ветвью сравнения и базовой ветвью.

Разрешение конфликтов слияния

Чтобы устранить конфликт слияния, необходимо вручную отредактировать конфликтующий файл и выбрать изменения, которые необходимо сохранить в окончательном слиянии. Существует несколько разных способов устранения конфликта слияния:

  • Если конфликт слияния вызван конкурирующими изменениями строк, например, когда люди вносят разные изменения в одну и ту же строку одного файла на разных ветках вашего Git-репозитория, вы можете решить это с GitHub помощью редактора конфликтов. Дополнительные сведения см. в разделе Разрешение конфликта слияния на GitHub.

  • Для всех остальных типов конфликтов слияния необходимо разрешить конфликт в локальном клоне репозитория и перенести изменение в ветку на GitHub. Можно использовать командную строку или инструмент, например GitHub Desktop , чтобы нажать смену. Дополнительные сведения см. в разделе Разрешение конфликта слияния с помощью командной строки.

  • Для любого типа конфликта слияния, если у вас есть доступ к Copilot облачный агент репозиторию и он включён, вы можете нажать «Исправить» Copilot в поле слияния, чтобы Copilot разрешить конфликты за себя. Copilot Проанализирую конфликтующие изменения, решим конфликты и проверим, что сборка, тесты и LINTER всё ещё проходят. Дополнительные сведения см. в разделе Обзор материалов Copilot.

Если у вас конфликт слияния в командной строке, вы не можете отправить локальные изменения, GitHub пока не разрешите конфликт слияния локально на вашем компьютере. При попытке объединения ветвей в командной строке с конфликтом слияния появится сообщение об ошибке. Дополнительные сведения см. в разделе Разрешение конфликта слияния с помощью командной строки.

$ git merge BRANCH-NAME
> Auto-merging styleguide.md
> CONFLICT (content): Merge conflict in styleguide.md
> Automatic merge failed; fix conflicts and then commit the result

Дополнительные материалы