Skip to main content

Разрешение конфликта слияния с помощью командной строки

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

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

Совет

С помощью редактора GitHub конфликтов можно разрешить конфликт слияния конкурирующих строк между ветвями, которые являются частью запроса на вытягивание. См . раздел AUTOTITLE.

Конкурирующие конфликты слияния изменений строк

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

  1. Откройте терминал или Git Bash.

  2. Перейдите в локальный репозиторий Git, в котором есть конфликт слияния.

    cd REPOSITORY-NAME
    
  3. Вывод списка файлов, затронутых конфликтом слияния. В этом примере у файла 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")
    
  4. Откройте предпочитаемый текстовый редактор, например Visual Studio Codeи перейдите к файлу, который имеет конфликты слияния.

  5. Выполните поиск файла для маркера <<<<<<<конфликта. Изменения из головной или базовой ветви отображаются после <<<<<<< HEAD, а затем =======изменения из другой ветви и >>>>>>> BRANCH-NAME.

    If you have questions, please
    <<<<<<< HEAD
    open an issue
    =======
    ask your question in IRC.
    >>>>>>> branch-a
    
  6. Решите, хотите ли вы сохранить изменения только вашей ветви, только другой ветви или внести совершенно новое изменение, которое может включать изменения в обеих ветвях. Удалите конфликтующие маркеры <<<<<<<, =======, >>>>>>> и внесите необходимые изменения в окончательном объединении. Например, можно сохранить оба изменения:

    If you have questions, please open an issue or ask in our IRC channel if it's more urgent.
    
  7. Этап изменений.

    git add .
    
  8. Зафиксируйте изменения с помощью комментария.

    git commit -m "Resolve merge conflict by incorporating both suggestions"
    

Теперь вы можете объединить ветви в командной строке или отправить изменения в удаленный репозиторийGitHub и объединить изменения в запросе на вытягивание.

Конфликты слияния файлов удалены

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

  1. Откройте терминал или Git Bash.

  2. Перейдите в локальный репозиторий Git, в котором есть конфликт слияния.

    cd REPOSITORY-NAME
    
  3. Вывод списка файлов, затронутых конфликтом слияния. В этом примере файл 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")
    
  4. Откройте предпочитаемый текстовый редактор, например Visual Studio Codeи перейдите к файлу, который имеет конфликты слияния.

  5. Определите, следует ли сохранить удаленный файл. Чтобы добавить его обратно в репозиторий, выполните следующие действия.

    git add README.md
    

    Чтобы удалить этот файл из репозитория, выполните следующие действия:

    $ git rm README.md
    > README.md: needs merge
    > rm 'README.md'
    
  6. Зафиксируйте изменения с помощью комментария.

    $ git commit -m "Resolve merge conflict by keeping README.md file"
    > [branch-d 6f89e49] Merge branch 'branch-c' into branch-d
    

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

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