10

我需要帮助解决以下问题:

我正在尝试将源分支中的代码搁置到目标分支上。

我正在使用以下内容:

  • VS2012 遥控
  • TFS 2012
  • VS2012 x64 交叉工具命令提示符

当我使用命令提示符执行取消搁置操作时,会出现以下情况:

  1. 搁置集详细信息对话框显示更改文件列表。
  2. 单击取消搁置按钮。
  3. 观察命令提示符输出:“已添加具有相同键的项目。”

我已经为电动工具下载了 ServicePack1。但是,我未能解决此问题。

4

4 回答 4

8

当我从源分支重新搁置变更集但选择不在本地保留待处理的更改时,我遇到了同样的问题并修复了它。此后,新搁置集的迁移顺利进行。

(我还确保我遵循了从本网站的其他答案中收集的以下步骤)

  • 使用包含源分支和目标分支的工作区
  • 从映射到源分支的文件夹中运行命令
  • 检查包含空格的任何路径周围的引号
  • 删除 C:\Users[USERNAME]\AppData\Local\Microsoft\Team Foundation\4.0\Cache 中的缓存并重新启动 Visual Studio
于 2013-05-15T09:32:27.693 回答
8

使用Visual Studio 2013和以下命令时,我遇到了同样的错误:

> tfpt unshelve /migrate /source:"$/Root/Solution" /target:"$/Root/Branches/Solution" "The name of my shelveset"
> An item with the same key has already been added


研究

这是我试图解决的问题:

  • 按照安德烈的回答清除缓存
  • 尝试从Source -> Branch and Branch -> Source运行命令
  • 我的工作区已经包含了源分支和目标分支


解决方案

打开相当于 VS2013 x86 Native Tools 命令提示符。

  1. 检查您是否安装了 Team Foundation Power Tools:

    C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\tfpt

  2. 确保您有 0个待处理和已排除的更改。
    我有一些被排除的更改被检测到但没有被添加,这就是我发现的原因。排除的更改应如下所示:

    在此处输入图像描述
    注意:没有“检测到:XX(添加)” -应该是可见的

  3. 运行时tf status,您应该会看到类似以下内容。.tfignore
    文件 的 1 个更改或 0 个更改。其他任何事情都会破坏合并。

    C:\tfs\Root\Solution>tf status
    文件名 更改本地路径


    $/Root .tfignore 编辑 C:\tfs\Root\Solution.tfignore

    1 个更改

  4. 确保您tfpt从源解决方案目录运行命令

您现在应该能够成功地将搁置集从一个分支合并到另一个分支。

关于 .tfsignore 的注意事项:
如果您有很多挂起的更改,无论出于何种原因都不想撤消,那么可以修改 .tfignore 文件。

如果这是您留下的唯一更改文件,它不会阻止合并。
.tfignore 参考 => stackoverflow - 如何忽略 tfs 中的文件/目录?

于 2014-11-24T15:01:33.220 回答
3

尝试撤消源和目标分支上的所有更改,然后重试...

于 2015-01-05T11:36:48.130 回答
2

尝试删除以下文件夹中的所有文件并重新启动VS2012(Source):

C:\Users[USERNAME]\AppData\Local\Microsoft\Team Foundation\4.0\Cache

于 2013-01-05T09:07:26.640 回答