Конфликты слияния происходят, когда конкурирующие изменения вносятся в ту же строку файла или когда один пользователь редактирует файл, а другой пользователь удаляет тот же файл. См . раздел AUTOTITLE.
Совет
С помощью редактора GitHub конфликтов можно разрешить конфликт слияния конкурирующих строк между ветвями, которые являются частью запроса на вытягивание. См . раздел AUTOTITLE.
Конкурирующие конфликты слияния изменений строк
При конкурирующих изменениях влияют на те же строки, выберите, какие изменения следует сохранить, а затем зафиксируйте разрешение.
-
Откройте терминал или Git Bash.
-
Перейдите в локальный репозиторий Git, в котором есть конфликт слияния.
cd REPOSITORY-NAME -
Вывод списка файлов, затронутых конфликтом слияния. В этом примере у файла styleguide.md есть конфликт слияния.
$ git status > # On branch branch-b > # You have unmerged paths. > # (fix conflicts and run "git commit") > # > # Unmerged paths: > # (use "git add <file>..." to mark resolution) > # > # both modified: styleguide.md > # > no changes added to commit (use "git add" and/or "git commit -a") -
Откройте предпочитаемый текстовый редактор, например Visual Studio Codeи перейдите к файлу, который имеет конфликты слияния.
-
Выполните поиск файла для маркера
<<<<<<<конфликта. Изменения из головной или базовой ветви отображаются после<<<<<<< HEAD, а затем=======изменения из другой ветви и>>>>>>> BRANCH-NAME.If you have questions, please <<<<<<< HEAD open an issue ======= ask your question in IRC. >>>>>>> branch-a -
Решите, хотите ли вы сохранить изменения только вашей ветви, только другой ветви или внести совершенно новое изменение, которое может включать изменения в обеих ветвях. Удалите конфликтующие маркеры
<<<<<<<,=======,>>>>>>>и внесите необходимые изменения в окончательном объединении. Например, можно сохранить оба изменения:If you have questions, please open an issue or ask in our IRC channel if it's more urgent. -
Этап изменений.
git add . -
Зафиксируйте изменения с помощью комментария.
git commit -m "Resolve merge conflict by incorporating both suggestions"
Теперь вы можете объединить ветви в командной строке или отправить изменения в удаленный репозиторийGitHub и объединить изменения в запросе на вытягивание.
Конфликты слияния файлов удалены
Когда одна ветвь удаляет файл и другую ветвь редактирует тот же файл, выберите, следует ли сохранить или удалить файл, а затем зафиксировать разрешение.
-
Откройте терминал или Git Bash.
-
Перейдите в локальный репозиторий Git, в котором есть конфликт слияния.
cd REPOSITORY-NAME -
Вывод списка файлов, затронутых конфликтом слияния. В этом примере файл
README.mdимеет конфликт слияния.$ git status > # On branch main > # Your branch and 'origin/main' have diverged, > # and have 1 and 2 different commits each, respectively. > # (use "git pull" to merge the remote branch into yours) > # You have unmerged paths. > # (fix conflicts and run "git commit") > # > # Unmerged paths: > # (use "git add/rm <file>..." as appropriate to mark resolution) > # > # deleted by us: README.md > # > # no changes added to commit (use "git add" and/or "git commit -a") -
Откройте предпочитаемый текстовый редактор, например Visual Studio Codeи перейдите к файлу, который имеет конфликты слияния.
-
Определите, следует ли сохранить удаленный файл. Чтобы добавить его обратно в репозиторий, выполните следующие действия.
git add README.mdЧтобы удалить этот файл из репозитория, выполните следующие действия:
$ git rm README.md > README.md: needs merge > rm 'README.md' -
Зафиксируйте изменения с помощью комментария.
$ git commit -m "Resolve merge conflict by keeping README.md file" > [branch-d 6f89e49] Merge branch 'branch-c' into branch-d
При разрешении конфликтов слиянием вы можете отправить изменения в удаленный репозиторий GitHub или объединить запрос на вытягивание в ее базовую ветвь.