Подтвердить что ты не робот

TFS: перезаписать ветку с другой

Возможно ли перезаписать ветку другим?

Или это единственное решение для удаления ветки B и создания новой ветки из Branch A?

4b9b3361

Ответ 1

Если вы не используете TFS 2010, я бы рекомендовал использовать Merge + Resolve для синхронизации двух ветвей.

# cancel out of conflict dialog
tf merge A B -r -force -version:T
tf resolve B -r -auto:acceptTheirs

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

Delete + rebranch в 2005/2008 году рискует столкнуться с конфликтами пространства с кошмаром и отладкой в ​​будущем. Другой вариант, если у вас есть 2008, - Destroy + rebranch. Очевидно, что предполагается, что вы в порядке с потерей всей истории из оригинальной копии B.

Ответ 2

В Visual Studio 2010 я просто использовал беспочвенное слияние для достижения этого:

Tf merge/baseless [путь источника] [целевой путь]/рекурсивный

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

Обратитесь к: http://msdn.microsoft.com/en-us/library/bb668976.aspx

Ответ 3

У меня был успех, используя ответ Ричарда Берга, но чувствовал, что было несколько деталей, которые отсутствовали. Именно так я смог устранить различия, связанные с разрешениями конфликтов и наборами изменений, которые не были объединены с исходным кодом и сделать цель идентичной источнику. Обратите внимание, что так я буду ссылаться на ветки - источник - тот, который не должен быть изменен, в то время как цель - то, которое должно быть идентично исходному.

  • Убедитесь, что у вас установлена ​​последняя версия ветвей источника и цели в рабочей области. Также убедитесь, что у вас нет ожидающих изменений.
  • Отменить все кандидаты для слияний с целевой ветвью в ветку источника. Это делается для того, чтобы предотвратить любое из этих различий от непреднамеренного объединения обратно в ветвь источника позже.

tf merge $/target $/source /recursive /discard

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

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

    3,1. Просмотрите историю на целевой ветке и найдите последнее полное слияние от источника до цели (игнорируйте сливки вишни, так как это приведет к множеству ложных срабатываний) - обратите внимание на номер набора изменений. Более простой альтернативой было бы выполнить слияние из ветки источника в целевую ветвь, чтобы получить последнюю версию из ветки источника в целевую ветвь.

    3,2. Щелкните правой кнопкой мыши на ветке источника в проводнике исходного кода и выберите "Сравнить" в контекстном меню. Используйте только последнюю версию для источника, если вы объединили ветвь источника в целевую ветку на шаге 2.1. В противном случае выберите "Набор изменений" из исходной версии | Введите поле со списком и введите номер набора изменений с шага 2.1.

    3.3. Используйте стрелку раскрывающегося списка в кнопке "Обзор" рядом с полем "Целевой путь", чтобы выбрать "Путь к серверу". Затем выберите целевую ветку в открывшемся диалоговом окне.

введите описание изображения здесь

3.4. Нажмите OK в диалоговом окне Сравнить, чтобы выполнить сравнение.

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

tf merge $/source $/target /recursive /force /version:T

Примечание. спецификация версии T указывает на последнюю версию.

  1. Закройте диалог конфликтов слияния.

  2. Автоматически разрешать все конфликты, выбирая ветвь источника.

tf resolve $/target /recursive -auto:TakeTheirs

  1. Заезд.

  2. Подтвердите, что больше нет кандидатов для слияния с целью к источнику и что между двумя ветвями нет различий (на этот раз только с использованием последних версий, поскольку мы сделали принудительное слияние последней версии на этапе 4).

См. MSDN для получения более подробной информации о tf merge и решить.

Ответ 4

Удалите ветвь B и создайте новую из ветки A.

Есть ли причина, по которой вы не хотите этого делать?