强制TFS检测更改

47

看起来这应该是一件非常简单的事情,但我找不到如何做...

我使用编写的脚本对分布在代码库中的多个文件进行了更改。问题是TFS在其无限的智慧中认为文件没有更改。除了手动查找每个文件并点击“编辑检出”之外,还有没有办法告诉TFS重新扫描所有内容并检测更改?


4
重复问题:https://dev59.com/cm025IYBdhLWcg3wnnYw - Morten Frederiksen
1
很好的答案,但切换到本地工作区与服务器工作区会更简单。 - Andrew Clear
这个回答解决了你的问题吗?如何让TFS 2010检测到在Visual Studio之外对文件所做的更改? - Ian Kemp
8个回答

27

文件夹比较(文件->源代码控制->比较...)可以解决问题。选择要从哪个文件夹开始进行比较,然后选择与最新版本进行比较。结果将显示已更改的文件以及它们是否已检出。


3
有趣的是,当我在 VS 2012 中进行文件夹比较时,它显示 TF10108 错误:源代码控制无法将文件与文件夹进行比较。请选择两个文件并重试。 - arviman
@arviman:第二个路径需要是一个文件。当你在 Visual Studio 之外更改了项目中的数百个文件时,这不是一个可行的解决方案。 - damd
是的,它会显示,现在有80K个文件,这些文件是随机添加/编辑/删除的,但是尚未进行待处理更改... - David V. Corbin

20

15

本地工作区

您需要使用一个本地工作区(Local Workspace)。以下是如何管理工作区的方法:

visualstudio.com:"创建和管理工作区"

添加或编辑工作区时, 点击高级(Advanced) >> ,然后将位置(Location):设置为本地(Local)

现在,当您的脚本或其他内容在 Visual Studio 外更改文件时,您的工作区会自动检测到变更(changes)

它还可以检测到添加(adds)删除(deletes),但您必须手动将其包含在待提交更改(Pending Changes)中,在排除的更改(Excluded Changes)下方有链接可用。

在团队资源管理器(Team Explorer)中检测到添加的文件

但要小心。当检测到添加(adds)删除(deletes)并将其添加到待提交更改(Pending Changes)中时,文件不会自动包含在您的项目中。所以,您可以将它们检入到TFS中,但它们不会列在解决方案资源管理器(Solution Explorer)下。

Matt Burke为此问题提供了一个解决方案:

mattburkdev.com:"在Visual Studio中自动包含文件夹中的所有文件"

要编辑项目文件,右键单击您的项目,选择取消加载项目(Unload Project),然后再次右键单击该项目并选择编辑(Edit)。编辑项目文件后保存并关闭它。然后右键单击并选择加载项目(Load Project)

但是需要注意的是,该项目仅在加载该项目时才搜索包括这些文件夹中的新文件以进行包含,而不是在您打开该项目时进行。因此,如果有一些文件在 Visual Studio 之外被添加,您只需重新加载该项目。


服务器工作区

但是如果由于某种原因必须坚持使用服务器工作区,则我还有另一个窍门:

首先:检出所有可能有待更改的文件(最好检出许多文件)。 然后转到“团队资源管理器” ->“待处理更改”,选择刚刚检出的所有文件。 然后选择“撤消更改”。完成后会收到“确认撤消检出”的消息。 此消息仅会出现在实际发生更改的文件上! 对于每个文件选择“否”或“全部否”。

最后:在待处理更改下,所有文件都将从列表中删除,除了具有待处理更改的文件。


希望这能帮到某人,您也不必像我一样久寻解决方案 ^^


我希望在我感到沮丧并检查了整个项目然后重新检查了所有内容之前,我能够阅读这篇文章。这花费了一些时间。我已经删除了项目内容,然后从其他地方粘贴了修改后的版本,但它拒绝检测更改。也许这样做会起作用。 - Methodician
谢谢!这对每一位从git过来的人来说都是一个常见问题解答。你一定会喜欢这个功能:“当你的网络连接不可用或不可靠时,你可以快速开始编辑文件”,“当你在Visual Studio外添加或删除文件时,程序会自动检测这些更改”。很难想象除了最琐碎的项目之外还有其他用途。虽然文档中说,在大多数情况下应该使用local,但即使在VS2019中它也不是默认选项。 - sebkraemer
本地工作区性能相对较差,强烈警告任何使用单一代码库设置的人。 - Ryan Leach

5
如果您的更改是在离线状态下进行的,您可以转到“文件”>“源代码控制”>“转到在线状态”,所有文件都将被检查以进行修改。

3

如果以上方法都无效,您也可以尝试重新绑定项目,具体操作是:打开“文件”菜单 -> “源控制” -> “高级” -> “更改源控制”。


只需单击“解除绑定”,然后立即跟随一个“绑定”即可解决此问题。这是最简单的解决方案,但为什么会发生这种情况并不清楚。 - Jason Honingford

3

在Visual Studio 2015中:

源代码控制 ->高级 ->刷新状态

源代码控制 ->高级 ->刷新状态


在VS2019中不可用。 - Demodave
1
@Demodave - 它在VS 2019专业版(版本16.3.6)中可用。 - jlspublic

0

我曾经遇到过这个问题,当我将项目从一台电脑移动到另一台电脑时。 解决方法是删除TFS在解决方案文件夹中创建的临时文件。 删除.vs和隐藏的$tf文件夹。

如果没有成功,在本地计算机上将您的解决方案文件夹复制到另一个文件夹中,删除解决方案中的所有文件,从TFS服务器获取最新版本,然后从复制的文件夹中只获取必要和编辑过的文件并将它们放回解决方案文件夹中(这将覆盖一些文件)。

最后别忘了检查项目映射,如果一切正常,请右键单击解决方案并选择“添加到源代码控制”选项。


0

Dtsx文件放在TFS文件夹中未被识别。

  • 在您的Visual Studio(2015)主屏幕上,点击Team Foundation Server链接。导航到正确的分支。
  • 在屏幕左侧的窗口中,导航到包含您的文件的文件夹。展开文件夹。
  • 在文件夹右侧,您会看到三个点。单击它们,然后单击“+添加文件”。

选择“上传现有文件”。然后,您可以拖放您的.dtsx文件到窗口中,然后单击确定。

最后,您需要执行“Fetch”以将文件添加到其中。然后您需要执行“Pull”。 最后,您可以将更改提交到远程分支。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接