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


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

Конфликт возникает при внесении изменений в один и тот же элемент в рабочей области и в удаленном репозитории 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 переключите рабочую область обратно в исходную ветвь.