Как разрешать конфликты в git

Аватар пользователя Roman Ashikov
Roman Ashikov
09 августа 2022

Когда возникает конфликт git сообщает нам об этом в выводе в терминал. Конфликты могут возникать при выполнении rebase, megre, revert и т.п. Рассмотрим всё на примере команды git merge, когда мы вливаем какую-то ветку в main. В выводе git status файлы, в которых возникли конфликты, помечаются как both modified.

$ git status
On branch main
You have unmerged paths.
(fix conflicts and run "git commit")
(use "git merge --abort" to abort the merge)

Unmerged paths:
(use "git add <file>..." to mark resolution)

both modified:   file_with_conflict.md

Если мы посмотрим внутрь файла, то увидим:

$ cat file_with_conflict.md
<<<<<<< HEAD
some content
=======
new content to merge
>>>>>>> new_branch_to_merge

Тут мы видим разделители:

  1. <<<<<<< HEAD
  2. =======
  3. >>>>>>> new_branch_to_merge

Всё что до ======= это изменения в текущей ветке, а всё что после это входящие изменения (которые мы попытались влить из другой ветки). Соответственно, нам нужно оставить либо одно, либо другое. Это и называют "разрулить конфликт". Давайте оставим только новые изменения. Вот как будет выгядеть файл:

$ cat file_with_conflict.md
new content to merge

После этого файл нужно проиндексировать с помощью git add и выполнить коммит. Таким образом зафиксировав в истории новые изменения.

1 0

Есть что добавить? Зарегистрируйтесь

или войдите в аккаунт

Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Курсы по программированию в Хекслете

Программирование

Веб-разработка

Разработка, верстка и деплой сайтов и веб-приложений, трудоустройство для разработчиков

Frontend-разработка

Разработка внешнего интерфейса сайтов и веб-приложений и верстка

Создание сайтов

Разработка сайтов и веб-приложений на JS, Python, Java, PHP и Ruby on Rails

Backend-разработка

Разработка серверной части сайтов и веб-приложений

Тестирование

Ручное тестирование и автоматизированное тестирование на JS, Python, Java и PHP

Аналитика данных

Сбор, анализ и интерпретация данных на Python

Интенсивные курсы

Интенсивное обучение для продолжающих

DevOps

Автоматизация настройки локального окружения и серверов, развертывания и деплоя

Математика для программистов

Обучение разделам математики, которые будут полезны при изучении программирования

Тест-драйв

JavaScript

Разработка сайтов и веб-приложений и автоматизированное тестирование на JS

Python

Веб-разработка, автоматическое тестирование и аналитика данных на Python

Java

Веб-разработка и автоматическое тестирование на Java

PHP

Веб-разработка и автоматическое тестирование на PHP

Ruby

Разработка сайтов и веб-приложений на Ruby on Rails

Go

Курсы по веб-разработке на языке Go

HTML

Современная верстка с помощью HTML и CSS

SQL

Проектирование базы данных, выполнение SQL-запросов и изучение реляционных СУБД

Git

Система управления версиями Git, регулярные выражения и основы командой строки

Бесплатные курсы

Бесплатные курсы по тестированию, дата-аналитике, верстке, программированию на Python, Java, PHP и JavaScript.