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


94

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


您的防病毒软件可能会更新文件的最后修改日期吗?或者您正在使用加密的笔记本电脑?
DOK


58
这必须是TFS最令人讨厌的功能之一
Brad Thomas

我也有这个问题-TF可以,但是TFPT不能-我认为这是因为我在Visual Studio 2010工作区中使用了“ TFPT-Team Foundation Power Tools 2012” ...:-/
BrainSlugs83

看起来我所要做的只是连接到Visual Studio 2012中的同一集合。有关更多详细信息
请参见此

Answers:


49

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

这篇博客文章描述了一种不太直观的处理方式。在注释中,还有一个更好的建议是通过命令行通过TFS强大的工具进行处理。

TFS待处理的更改忽略相同的文件...


12
我强烈建议您使用tfpt uu电动工具,而不要使用笨拙的“ No To All”解决方案。只有添加和修改的编辑才会出现此提示。例如:UI将撤消重命名(仅用于重命名,而不重命名+编辑),而不提示。
爱德华·汤姆森,

8
如果原始博客文章消失了,则命令为tfpt uu /noget /r *,必须从分支的根目录执行。这样说,尽管它正确地选择了多余的更改,然后声称要撤消它们,但我仍然在VS和“签入”对话框中看到它们已签出,所以对我来说似乎很不便:/
Mike Chamberlain

2
发生这种情况的另一种可能性是,如果您在不实际更改文件内容的情况下切换文件的“只读”位。TFS有时可能很烦人。
arviman 2014年

1
作为参考,“ No To All”解决方案从以下链接复制到此处:“另一个选项是“撤消签出”所有更改,并在要求确认撤消签出时单击“否对所有”。 “撤消签出”所有未更改的文件,所有更改的文件将保持签出状态。我始终使用此方法。
PJSimon 2015年

那个“ No To All”技巧很不错,但是它有一些缺点。例如-我使用我的工具来生成DB EntityFramework类。我在外部目录中生成它们,然后将它们拖到我的解决方案中。有时,当没有更改时,它仍然显示更改。此“禁止所有人使用”的技巧将其删除。但是,如果添加了以前没有的新类,它将从源代码管理中删除它们-我必须手动添加它们。

17

最近,我刚刚将VS2010更新为VS 2013,这个问题更加严重。使用比较时,完全不会弹出完全相同的文件。我讨厌这一点,因为除非仔细检查比较文件,否则您无法找出真正更改的文件。

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

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

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


2
我已经运行了“ tfpt uu ./noget / recursive”,它声称工作空间中没有多余的未决更改。VS2015,TFPT2015。我所有的更改都是空的[merge]更改。
fastmultiplication '16

我没有成功尝试过。删除参数的要点似乎可以使其正常工作: uu / noget / recursive
dperez

10

为了使以上解释更清楚:

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

为我工作。

进一步:

有时我发现我需要在开发人员命令提示符的打开提示符下运行命令(并出现找不到工作区的错误),然后导航到工作区文件夹并在其中执行。如果我直接转到正确的文件夹,则找不到该命令。 (我自己不介意解决该问题。)


感谢我从2015年11月30日开始。我一次又一次收到相同的问题,您的回答很完美。我试图对您进行投票,但出现了某种“时空连续体”错误。与1955年11月30日有关,“未找到所需的1.21吉瓦”。
菲尔(Phil)2016年

不幸的是不为我工作。Unable to determine the workspace。已经尝试更新工作区缓存,没有成功。2小时后,我将放弃并检入未更改的文件以摆脱它们。
C4d

@ C4u自从移至VS 2015以来,我可能已经开始经历自己的问题了。但是,已签出文件出现的问题已经消失了。我会看看我能找到什么。
菲尔(Phil)

1
我无法使用NuGet找到PowerTools,但是能够通过Google搜索“ Microsoft Visual Studio Team Foundation Server 2013 Power Tools”找到并安装它
Colin

@Versatile看Visual Studio 2017,您需要转到“工具”>“扩展和更新...”。我不记得2013/15的菜单结构。也许我的答案需要更正。如果您使用VS 2013/15,并且可以检查菜单结构,请随时对我的答案进行编辑。:)
Phil

1

我通过单击“ Stage All更改”中的按钮解决了这一问题,然后使用取消了它们的暂存Unstage All

它解决了我在本Changes节中保留的未更改文件。漂亮又简单。


0

Visual Studio 2012引入了一个称为“ 本地工作区”的新概念。

当工作区位置配置为本地时,它将放置原始文件的本地副本(就像SVN / CVS一样)。

然后,它将自动将未更改的文件隐藏在未决的更改中。

使用TFS源代码管理资源管理器来“编辑...” TFS工作区,并将“高级...”设置位置从“服务器”更改为“本地”。


我的工作区是本地的,但是未中断的文件仍会显示在待更改中...它不会自动撤消签出...
Ozkan

0

对我来说,协调工作空间可解决这些无效的未决更改:

  1. 团队资源管理器->构建
  2. 右键单击最新的版本,进行更改->“协调工作区...”
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.