我知道以前有人问过这个问题,但由于没有答案,我又问了一次。
我正试图将搁置集从一个分支迁移到另一个分支。我在工作区DIR:中运行以下命令
tfpt unshelve changes;myusername /migrate /source:$/main /target:$/new-branch
当我运行该命令时,我会打开"搁置集详细信息"窗口,其中包含更改和文件夹(指向$/Main)
单击取消搁置将显示冲突对话框,文件夹再次指向$/main。如果我点击resolve,我会得到以下选项:
- 保留本地更改撤消本地更改并搁置
- 撤消我的本地更改,并接受搁置的更改
- 保留我的本地更改,并合并本地和搁置的内容
无论我选择哪个选项,我都不会在"新分支"中得到任何挂起的更改。我唯一挂起的更改是针对主分支的。
有什么想法吗?
您需要从映射到目标分支的目录中运行此命令(在您的示例中为$/new-branch
)。
例如,如果您当前的分支是=>Main,它映射在C:WorkspaceTeamProjectMain...
的工作空间中
并且您希望将更改移动到映射在D:WorkspaceTeamProjectDev
的Dev
然后,您需要从以下目录运行以下命令:
C:WorkspaceTeamProjectMain> 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
我也遇到了这个问题,发布的解决方案似乎都不起作用。
结果发现这是用户错误,我在/target
参数中使用了反斜杠而不是正斜杠。
这是因为我最初复制了项目的本地路径,而不是TFS路径,然后当我注意到我的错误时,用$替换了根路径-但我错过了斜杠方向的更改-显然这很重要,意味着你的搁置集将在源分支取消搁置。
我和提问者在使用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"取消搁置cbbss02;xyz@gmail.com/migrate/source:$/E Pluribus Unum/SourceCode/rel1.2/target:$/E Pluribus Unum/SesourceCode/rel1.1
正如其他人所提到的,我在源和目标路径周围加了引号:
"C:\Program Files(x86)\Microsoft Team Foundation Server 2013 Power Tools\tfpt.exe"取消搁置cbbss02;xyz@gmail.com/migrate/source:"$/E Pluribus Unum/SourceCode/rel1.2"/target:"$/E plribus Unum/SourceCode/rel1.1">
让它实际向目标分支提出更改。(我还确保Visual Stuido已关闭)