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


Команда merge

Команда merge применяет изменения одной ветви в другую.

Примечание

Результаты данной команды не отображаются на сервере Team Foundation (подсистема контроля версий) до тех пор, пока не будет выполнена операция возврата.Дополнительные сведения см. в разделе Возврат ожидающих изменений.

Необходимые разрешения

Для использования команды merge необходимо, чтобы разрешение Извлечение для папки рабочей области, содержащей назначение, имело значение Разрешить, и чтобы разрешение Чтение для папки рабочей области, содержащей источник, также имело значение Разрешить. Дополнительные сведения см. в разделе Разрешения Team Foundation Server.

tf merge [/recursive] [/force] [/candidate] [/discard] 
[/version:versionspec] [/lock:none|checkin|checkout] [/preview] 
[/baseless] [/nosummary] [/noimplicitbaseless] [/conservative] [/format:(brief|detailed)] [/noprompt] [/login:username,[password]] source destination

Параметры

Аргумент

Описание

versionspec

Предоставляет значение, например C2, для параметра /version. Дополнительные сведения о том, как Team Foundation выполняет анализ спецификаций версий для определения элементов, находящихся в области его действия, см. в разделе Синтаксис командной строки (управление версиями).

source

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

destination

Указывает файл или папку, которая является целевым объектом операции слияния.

username

Предоставляет значение для параметра /login. Можно задать значение для имени пользователя как ДОМЕН\имя_пользователя или как имя_пользователя.

Параметр

Описание

/recursive

Выполняет поиск спецификации элемента source в текущем каталоге и вложенных папках.

/force

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

/candidate

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

/discard

Не выполняет операцию слияния, но обновляет журнал слияний для отслеживания места, где произошли эти действия. При этом набор изменений для определенного слияния не используется.

/version

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

При выборочном слиянии диапазон версий представляет начальную и конечную точки объединяемого набора изменений. Например, при слиянии версий с 4 по 6 объединяются наборы изменений 4, 5 и 6.

/lock

Указывает тип блокировки или снимает ее с элемента. Дополнительные сведения см. в разделе Основные сведения о типах блокировки.

Параметры блокировки

  • Нет

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

  • Checkin

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

  • Checkout

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

/preview

Отображает предварительный результат слияния.

/baseless

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

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

/noimplicitbaseless

Указывает, что Team Foundation не будет выполнять неявное слияние без базовой версии между двумя элементами, имеющими одинаковое относительное имя в двух несвязанных деревьях системы управления версиями.

/nosummary

Пропускает сводку конфликтов, ошибок и предупреждений.

/noprompt

Отменяет отображение запросов на ввод данных пользователем.

/conservative

В результате появляется больше конфликтов при слиянии одной ветви с другой.

/format

Задает формат для подведения итогов конфликтов слияния:

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

  • Detailed: собирает не только общее число конфликтов, ошибок и предупреждений, а также выводит сведения о каждом конфликте.

Примечание   Этот параметр применяется только тогда, когда результат содержит сведения о конфликтах. Невозможно отобразить сводные данные, если используется параметр /nosummary или при слияния возникает меньше 10 конфликтов, предупреждений и ошибок.

/login

Задает имя пользователя и пароль для проверки подлинности пользователя с Visual Studio Team Foundation Server.

Заметки

Для применения изменений в существующей исходной ветви к существующей конечной ветви используется команда merge программы командной строки tf. В конечную ветвь можно выполнить слияние отдельного изменения или всего набора изменений. Можно объединить изменения из исходной ветви в конечную или наоборот.

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

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

Слияние без базовой версии

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

При выполнении команды tf merge Team Foundation выполняет неявное слияние без базовой версии между двумя элементами с одинаковыми относительными именами в двух ранее связанных деревьях системы управления версиями. Например, может потребоваться выполнить слияние ветвей $SRC\ и $TGT. Обе ветви содержат несвязанные между собой файлы с одинаковым именем a.txt. При выполнении команды tf merge Team Foundation устанавливает отношение между двумя файлами a.txt, если файлы идентичны, если отключено FIPS-совместимое шифрование и если исходный файл не связан с каким-либо другим файлом в целевом местоположении.

Если выполняется команда tf merge с параметром /noimplicitbaseless, когда Team Foundation пытается объединить две ветви, два файла a.txt приведут к конфликту пространства имен при попытке возврата изменений. Для устранения конфликта необходимо переименовать один из этих файлов.

Примеры

В следующем примере выполняется объединение изменений из файла "MyFile_beta1", которые не были объединены в файл "MyFile_RTM".

c:\projects>tf merge MyFile_beta1 MyFile_RTM /recursive

В следующем примере в ветвь branch2 добавляются изменения только из набора изменений 137.

c:\projects>tf merge /version:C137~C137 branch1 branch2 /recursive

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

c:\projects>tf merge /version:C137 branch1 branch2 /recursive

В следующем примере выполняется печать списка наборов изменений в ветви1 (branch1), которые не были объединены в ветвь2 (branch2).

c:\projects>tf merge /candidate branch1 branch2 /recursive

В следующем примере выполняется печать списка наборов изменений в ветви2 (branch2), которые не были объединены обратно в ветвь1 (branch1).

c:\projects>tf merge /candidate branch2 branch1 /recursive

В следующем примере набор изменений 137 не учитывается как кандидат для объединения в ветвь2 (branch2).

c:\projects>tf merge /discard /version:C137 branch1 branch2 /recursive

См. также

Задачи

Разрешение конфликтов между двумя файлами

Ссылки

Синтаксис командной строки (управление версиями)

Команда Branch

Команда Merges

Другие ресурсы

Команды служебной программы командной строки "tf"

Ветвление и объединение