Поделиться через


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

Конфликт возникает при внесении изменений в один и тот же элемент в рабочей области и в удаленном репозитории Git. При возникновении конфликта в статусе Git указано конфликт, и коммит отключён.

Снимок экрана отчета со статусом Git, в котором указан конфликт.

При выборе параметра "Обновить" при возникновении конфликтов сообщение уведомляет вас о необходимости разрешения конфликтов перед обновлением.

Снимок экрана: сообщение об ошибке на вкладке управления версиями, информирующее о конфликтах.

Существует три способа устранения конфликта:

Устранение конфликтов в пользовательском интерфейсе

Выберите "Обновить все ", чтобы просмотреть список всех элементов, имеющих конфликты. Затем можно выбрать версию, которая будет храниться для каждого элемента. Для каждого конфликтующего элемента можно принять входящие изменения из репозитория Git или сохранить текущую версию в рабочей области.

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

  • Нажмите "Принять входящие изменения", чтобы перезаписать изменения в рабочей области. Изменения рабочей области теряются, а состояние Git меняется на синхронизировано, если импорт успешен.

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

Возврат к предыдущему состоянию

Вы можете вернуть всю рабочую область или ветвь Git в последнее синхронизированное состояние. Если откатить ветку Git к предыдущему коммиту, вы все равно сможете увидеть изменения, внесенные в несинхронизованную ветку. При восстановлении рабочей области все изменения, внесенные в нее после последнего коммита, теряются.

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

  • Используйте команду Undo, чтобы вернуть конфликтованные элементы в рабочей области в их последнее синхронизированное состояние.
  • Вернитесь к последнему синхронизированному состоянию в Git с помощью git revert команды в Azure DevOps.

Вы также можете устранить конфликты, отключив и повторно подключив рабочую область. При повторном подключении выберите направление синхронизации. Обратите внимание, что при повторном подключении система перезаписывает все элементы в рабочей области или ветви, а не только конфликтующие. Он не возвращает рабочую область или ветвь в последнее синхронизированное состояние. Скорее, он перезаписывает все содержимое в одном месте содержимым из другого места.

Устранение конфликтов в Git

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

Примечание.

Только администратор рабочей области может повторно подключить рабочую область к новой ветви.

  1. На панели управления исходами выполните создание новой ветки, используя идентификатор последней синхронизированной ветки, показанный в нижней части экрана.

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

    Снимок экрана: сведения об идентификаторе ветви, показанные в нижней части экрана.

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

  2. Зафиксируйте изменения в новой ветке. Теперь эта новая ветвь включает изменения, которые вы внесли в элементы, связанные с более ранней версией ветви Git и не конфликтующие с вашими изменениями.

  3. В git устраните конфликты между исходной ветвью и новой ветвью.

  4. В Git объедините новую ветвь в исходную ветвь

  5. В Fabric переключите рабочую область обратно в исходную ветвь.