16

我知道以前有人问过这个问题,但由于没有答案,我又问了一次。

我正在尝试将搁置集从一个分支迁移到另一个分支。我正在工作区 DIR 中运行以下命令:

tfpt unshelve changes;myusername /migrate /source:$/main /target:$/new-branch

当我运行该命令时,我会打开“搁置集详细信息”窗口,其中包含更改和文件夹(指向 $/Main)

单击 unshelve 会出现冲突对话框,其中的文件夹再次指向 $/main。如果我点击解决,我会得到以下选项:

  • 保留我的本地更改撤消我的本地更改,并采取搁置
  • 撤消我的本地更改,并采取搁置的更改。
  • 保留我的本地更改,并合并本地和搁置的内容

无论我选择哪个选项,我都不会在“新分支”中得到任何待处理的更改。我唯一未决的更改是针对主分支的。

有任何想法吗?

4

3 回答 3

8

您需要从映射到目标分支的目录($/new-branch在您的示例中为 )运行此命令。

例如,如果您当前的分支是 => Main,它在您的工作区中映射为C:\Workspace\TeamProject\Main\...

并且您想将更改移动到映射到的 DevD:\Workspace\TeamProject\Dev

然后您需要从以下目录运行以下命令:

C:\Workspace\TeamProject\Main> tfpt unshelve "changes;muusername" /migrate /source:$/TeamProject/Main /target:$/TeamProject/Dev

有关更多详细信息,请参阅 Tarun 的博客文章:http: //geekswithblogs.net/TarunArora/archive/2011/06/06/unshelve-shelveset-created-from-one-branch-to-another.aspx

于 2013-02-01T11:07:01.327 回答
2

我也有这个问题,发布的解决方案似乎都没有工作。

事实证明这是用户错误,我在/target参数中使用了反斜杠而不是正斜杠。

这是因为我最初复制了项目的本地路径而不是 TFS 路径,然后当我注意到我的错误时用 $ 替换了根路径 - 但我错过了斜线方向的更改 - 显然这很重要,并且意味着你的搁置集将在源分支上搁置。

于 2014-06-23T11:16:07.620 回答
1

我与使用 TFPT - Team Foundation Power Tools 2013 的提问者有相同的经验。我会运行命令并收到消息“自动合并成功”,认为它正在工作,但看不到目标分支中的文件发生任何变化。
我的命令是这样的:

C:\Users\dev\TFS_TEST\rel1.1>"C:\Program Files (x86)\Microsoft Team Foundation Server 2013 Power Tools\tfpt.exe" unshelve cbbss02;xyz@gmail.com /migrate /source:$/ E Pluribus Unum/SourceCode/rel1.2 /target:$/E Pluribus Unum/SourceCode/rel1.1

正如其他人所提到的,我在源路径和目标路径周围加上引号:

"C:\Program Files (x86)\Microsoft Team Foundation Server 2013 Power Tools\tfpt.exe" unshelve cbbss02;xyz@gmail.com /migrate /source:"$/E Pluribus Unum/SourceCode/rel1.2" /target :"$/E Pluribus Unum/SourceCode/rel1.1"

让它实际传播对目标分支的更改。(我还确保 Visual Stuido 已关闭)

于 2014-05-09T18:07:37.503 回答