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


Устранение конфликтов в системе управления версиями Team Foundation

Azure DevOps Services | Azure DevOps Server 2022 — Azure DevOps Server 2019

Visual Studio 2019 | Visual Studio 2022

Преимущество использования система управления версиями Team Foundation (TFVC) для управления файлами заключается в том, что несколько пользователей могут одновременно работать в файле. Одним из недостатков является то, что иногда необходимо устранить конфликты перед получением, возвратом, отменой размещения, слиянием или откатом файлов.

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

Вы также можете разрешить конфликты из командной строки с помощью команды "Разрешить".

Совет

Если ваша команда должна сотрудничать для устранения большого количества конфликтов, например после операции слияния в большой базе кода, общедоступная рабочая область на общем компьютере разработки может помочь. Дополнительные сведения см. в статье "Создание и работа с рабочими областями".

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

Можно использовать окно Resolve Conflicts в Visual Studio, чтобы разрешить конфликты, которые вас блокируют. Чтобы открыть окно, выберите "Действия>разрешать конфликты" на странице "Ожидающие изменения" в Team Explorer.

Снимок экрана: использование окна

По умолчанию в окне отображаются только конфликты, вызванные последней попыткой операции. Когда окно находится в этом состоянии, появится сообщение, которое начинается: применен фильтр пути. Чтобы отобразить все конфликты в рабочей области, нажмите кнопку "Получить все конфликты". Появится сообщение, начинающееся с: <N> Конфликт .

Если много времени прошло с момента внесения изменений в файлы в рабочей области, могут возникнуть новые конфликты. Чтобы обновить окно "Разрешить конфликты ", нажмите кнопку "Обновить".

Снимок экрана: окно

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

  • Значок истории. История для просмотра истории файла. Если операция, вызвавшая конфликт, является слиянием или откатом, можно выбрать элемент управления меню справа от журнала, а затем выбрать либо журнал источника, либо журнал назначения. Дополнительные сведения см. в статье "Получение истории элемента".

  • Значок сравнения. Сравните или щелкните стрелку раскрывающегося списка рядом с значком и выберите команду. Откроется окно Diff.

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

Автоматически разрешить все конфликты

По умолчанию система автоматически пытается выполнить автоматическое восстановление всех конфликтов, если этот параметр не отключен. Чтобы отключить автоматическое AutoResolve All, выберите Инструменты>Параметры. В диалоговом окне "Параметры" в разделе "Управление версиями>" Visual Studio Team Foundation Server отмените выбор попытки автоматического разрешения конфликтов при создании.

Вы также можете вручную выбрать autoResolve All в окне "Разрешить конфликты ", а затем выбрать один из следующих параметров:

  • Все типы конфликтов, если вы хотите, чтобы система пыталась разрешить конфликты автоматически, используя все свои эвристики.

  • Определенные типы конфликтов, если требуется, чтобы система пыталась устранить конфликты, но вы хотите исключить некоторые эвристики.

    Откроется диалоговое окно "Выбрать конфликты для разрешения ". Проверьте или снимите параметры, которые требуется включить или отключить, а затем выберите AutoResolve.

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

Понимание автоматических параметров

Вы можете ограничить типы конфликтов автоматически разрешенными параметром AutoResolve All . При выборе autoResolve All и выборе определенных типов конфликтов откроется диалоговое окно "Выбрать конфликты для разрешения".

Снимок экрана: диалоговое окно

Причина конфликта

Пример

Выбор флажка


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

В версии файла слева нуль добавлен в начале. В файл справа в конце добавлено число три.

Снимок экрана: изменения содержимого, не конфликтующего.

Конфликтует с любыми изменениями содержимого

Изменения содержимого были внесены во время операции получения или проверки, уникальной для рабочей области, или во время операции слияния или отката, уникальной для целевой версии.

Записи четыре и пять были добавлены в рабочую область или целевую версию:

Снимок экрана: изменение содержимого, уникальное для рабочей области или целевого объекта.

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

Изменения содержимого были сделаны во время операции получения или проверки, уникальной для сервера, или во время операции слияния или отката, уникальной для исходной версии.

Элементы четыре и пять были добавлены на сервер или исходную версию:

Снимок экрана: изменение содержимого, уникальное для сервера или источника.

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

Файл был переименован на сервере во время операции получения или регистрации изменений, или в исходной ветке во время операции слияния или отката.

Вы извлекли файл с именем launch.cs и работали над ним. В течение этого времени кто-то еще проверил набор изменений, который повлиял на тот же файл. Этот набор изменений не изменил содержимое файла, но изменил имя файла на start.cs.

Конфликты, вызванные переименованием файла в версии сервера или исходной ветви

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

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

Снимок экрана: идентичные изменения содержимого в обеих версиях.

Конфликты, вызванные идентичными изменениями в сервере и рабочей области

Этот параметр также разрешает конфликты, вызванные всеми другими операциями, например, переименование, удаление, восстановление и разветвление, что приводит к созданию идентичных файлов.

Совет

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

AutoMerge выбрал конфликты

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

Совет

Нажмите и удерживайте клавиши CTRL или SHIFT, чтобы выбрать несколько конфликтов.

Примечание.

Если autoMerge отключен, необходимо вручную устранить конфликты.

Устранение выбранных конфликтов вручную

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

Использование окна слияния

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

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

В окне слияния можно:

  • Выберите макет окна: вертикальное представление, горизонтальное представление или смешанное представление.
  • Преодоление различий и конфликтов.
  • Выберите элементы из левой и правой версий файла, чтобы включить их в результаты.
  • Введите больше содержимого в файл в области результатов .
  • Просмотр журнала файла. Дополнительные сведения см. в статье «Получение журнала элемента».
  • Сравните версии файла.
  • Заметите файл, чтобы узнать, кто изменил что. Дополнительные сведения см. в разделе "Просмотр изменений файлов с помощью аннотации".

Когда вы удовлетворены содержимым области результатов , нажмите кнопку "Принять слияние".

Результат разрешения конфликта отображается в области результатов .