Как разрешать конфликты в 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
Познакомьтесь с основами Git бесплатно