Visual Studio TFS在挂起的更改列表中显示未更改的文件

dev*_*per 92 tfs visual-studio-2010

我在挂起的更改窗口中看到一个文件.我尝试将它与最新版本进行比较,我收到一条消息'文件是相同的'如果文件相同,为什么这个文件出现在挂起的更改窗口中?这个文件有什么变化?我可以配置TFS不列出相同的文件吗?

小智 47

如果文件由于更改而自动检出,并且最终文件的内容更改回原始状态,则这是正常的.此时,您将在比较时看到有关相同内容的消息.

这篇博客文章描述了一种处理这种问题的不那么直观的方法; 在评论中,有一个更好的建议是通过命令行通过TFS电动工具处理它.

TFS挂起更改忽略相同的文件...

  • 我强烈建议您使用`tfpt uu`电动工具,而不是**hacky"No To All"解决方案.只有添加和修改的编辑才能获得此提示.例如:重命名(仅限重命名,不重命名+编辑)将在没有提示的情况下由UI撤消. (12认同)
  • 如果原始博客帖子消失了,命令是`tfpt uu/noget/r*`,必须从分支的根目录执行.说到这一点,虽然它正确地获取了多余的更改,然后声称要撤消它们,我仍然在VS和Check In对话框中看到它们已经检出,所以对我来说似乎有些不妥:/ (8认同)
  • 发生这种情况的另一种可能性是,如果您切换文件的"只读"位而不实际更改其内容.TFS有时会很烦人. (2认同)
  • 作为参考,“No To All”解决方案是从以下链接复制的:“另一个选项是“撤消签出”所有更改,并在要求确认撤消签出时单击“No to All”。这样 Visual Studio 将“撤消签出”所有未更改的文件,所有已更改的文件将保持签出状态。我一直使用这种方法。” (2认同)

小智 17

最近我刚刚将VS2010更新到VS 2013,这个问题更加糟糕.使用比较时,根本不会弹出相同的文件.我讨厌这个,因为在仔细检查比较文件之前,你无法弄清楚哪些文件真正被改变了.

最后,我找到了解决方法:
在外部工具中添加"撤消未更改的签出":

  • 命令: tfpt.exe
  • 参数: uu . /noget /recursive
  • 初始目录: $(SolutionDir)

运行此命令后,TFS将自动撤消文件中的所有冗余更改.
但是这些文件仍然保持签出状态,实际上它们已经撤消并且与最新版本相同.我认为这是TFS中的一个错误.您只需要在解决方案资源管理器下的工具栏中单击"刷新"图标,这些文件将被刷新并显示正确的状态!

  • 我已经运行了"tfpt uu./ noget/recursive",它声称工作区中没有冗余的挂起更改.VS2015,TFPT 2015.我的所有更改都是空的[合并]更改. (2认同)

Phi*_*hil 10

为了使上述解释更清楚:

  1. 使用VS中的NuGet包管理器安装TFS Power Tools.
  2. 从Windows Start打开Visual Studio命令提示符(也称为VS 2013/2015的开发人员命令提示符).
  3. 通过命令提示符导航到本地工作空间的根位置.
  4. 执行以下命令:tfpt uu./ recursive/noget
  5. 如果出现提示,请选择放弃冗余更改.

为我工作.

进一步:

有时我发现在导航到工作区文件夹并在那里执行之前,我需要在Developer Command Prompt的开启提示符上运行命令(并找到找不到工作空间的错误).如果我直接进入正确的文件夹,则找不到该命令. (我不介意解决这个问题本身.)