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

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

Screenshot of a report with a Git status that says conflict.

Важно!

Эта функция доступна в предварительной версии.

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

Screenshot of error message from source control tab informing about conflicts.

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

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

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

Screenshot of UI to select which version of a conflicted item to keep.

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

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

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

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

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

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

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

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

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

Примечание.

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

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

    Screenshot showing how to check out a new branch from the source control pane by selecting the down arrow.

    Screenshot of branch ID information shown on bottom of the screen.

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

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

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

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

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