Представим следующую ситуацию: вы пилите некоторую функциональность в основной ветке проекта (бывает такое, согласитесь?). В некоторый момент приходит осознание того, что заливать это в TFS нет никакой возможности (фича не доделана, появились более приоритетные задачи…). И удалять, конечно же, тоже нельзя. Единственно верное решение – создать новую ветку и отправить изменения в неё. Однако, как оказалось, это не так-то и просто: Алгоритм:

  1. Создаем Shelvset “feature for new branch” в основной ветке (пусть она называется MAIN)
  2. Создаем ветку от MAIN MyNewFeature
  3. Устанавливаем Team Foundation Server Power Tools
  4. В Visual Studio Command Prompt выполняем команду: tfpt unshelve /migrate /source:$/MyAwesomeProject/MAIN /target:$/MyAwesomeProject/MyAwesomeFeature, где $/MyAwesomeProject адрес проекта в TFS. На этом шаге возможна ошибка “Unable to determine the workspace”. Исправляется переходом в папку с Source-веткой проекта в файловой системе (cd d:/projects/MyAwesomeProject/MAIN)
  5. После того, как выполните команду – появится окно с выбором автора Shelveset-а со списком его Shelveset-ов
  6. Выбираете созданный на первом шаге shelveset “feature for new branch” и кликаете “Ок”
  7. Открываете target-ветку в TFS, чекините изменения.
  8. Готово!