如何让TFS 2010检测对Visual Studio外部文件所做的更改?

时间:2011-05-05 14:18:34

标签: visual-studio visual-studio-2010 tfs tfs2010 tfvc

我正在将Team Foundation Server 2010与Visual Studio 2010一起使用。

每当我在Visual Studio之外修改文件时,TFS似乎都没有检测到对文件所做的更改,因此在修改文件后不提供签入文件的选项。

如何解决这个问题?

11 个答案:

答案 0 :(得分:149)

TFS有一个“Reconcile”命令:

  1. 打开源代码管理资源管理器
  2. 右键点击包含更改的文件夹,然后选择比较
  3. 选择要协调的文件(按 CTRL + A 以选择所有文件)
  4. 点击协调按钮
  5. 协调文件夹差异对话框中设置选项。确保没有待处理更改的文件设置为签出
  6. 点击确定
  7. 如果您进行了本地更改,则会显示结帐对话框。设置首选锁定类型
  8. 点击结帐
  9. Reconcile Folder Differences

    另请参阅:Reconcile differences between folders

答案 1 :(得分:47)

如果您在Visual Studio外部工作时与服务器建立了网络连接,则最好在编辑之前检查文件,使用tf命令行客户端或使用Windows资源管理器TFS Power Tools版本中提供的shell集成。 (此外,越来越多的其他工具采用TFS集成,使其自动化,但如果您只是使用记事本,则仍需要手动操作。)

当然,很多时候你在工作,而且你没有可用的网络连接,可以让你查看文件。

如果你知道你修改了哪些文件,你可以在Visual Studio中查看它们,然后你就可以重新检查它们了。

如果您不知道自己编辑了哪些文件,可以通过运行tfpt online命令(也是Power Tools版本的一部分)来检测更改。这将找到已在本地修改的文件,并从服务器中检出这些文件。

答案 2 :(得分:35)

这对我有用,使用TFS Power Tools:

tfpt online /adds /deletes /diff /noprompt /recursive directory-name

(其中directory-name是要更新的目录的路径,否则它将检测整个TFS存储库中的更改)

如果你想知道在没有实际做出任何改变的情况下它会做什么,你可以通过添加/preview开关强制它进行干运行。

答案 3 :(得分:14)

*1- make changes outside of Visual Studio
2- go to Visual Studio and open Source Control Explorer
3- right click on the folder > "Check Out for Edit" > "Check Out"
4- right click on the same folder > "Undo Pending Changes..." > "Undo changes" > "No to All"*

我在分支上测试了这个解决方法,这对我帮助很大。但是只有新文件和新文件夹必须手动完成。

我建议在操作之前创建一个分支。它会隔离您的操作时间。

注意:此技术还会对文件进行相同的清理,TFS始终将其标记为已修改。

答案 4 :(得分:7)

试试这个。这是某种解决方法,但它有效:

  1. 在Visual Studio之外进行更改
  2. 转到Visual Studio并打开“源代码管理资源管理器”
  3. 右键单击文件夹> “签出以进行修改”> “结帐”
  4. 右键单击同一文件夹> “撤消待处理的更改...”> “撤消更改”> “ No to All
  5. 就是这样。现在可以看到这些变化。

答案 5 :(得分:4)

还有另一个解决方案让TFS找出在Visual Studio之外发生了变化的文件:

  1. 离线打开解决方案
  2. 在Solution Explorer中选择解决方案文件,然后按Go Online按钮(GoOnline Button Icon
  3. 此后,TFS将自动扫描解决方案以进行更改。

    第一步可以通过多种不同方式实现。以下是一些:

    • 使用GoOffline扩展程序 - 非常简单有效。
    • 如果在打开解决方案时要求您提供TFS凭据(无自动域身份验证),请不要输入凭据。该解决方案将脱机打开,您将在按“转到在线状态”按钮后登录
    • (极端解决方案)断开网络电缆;打开解决方案;连接网线。

答案 6 :(得分:3)

Visual Sourcesafe也是这样工作的,我让VSS或TFS注意到更改的方法是在Visual Studio中检查一次文件。

答案 7 :(得分:1)

打开源代码管理并转到您的TFS文件夹。右键单击该文件夹,然后选择“比较”。

请注意,您编辑的文件显示为红色。

我发现这比tfpt online更好,{{1}}也可以获取非读取且未编辑的文件。

答案 8 :(得分:1)

我过去遇到过这个问题,当我的互联网停机并且我离线工作时,我的大多数更改都没有出现在团队资源管理器中。

遵循以下步骤: 首先,在解决方案资源管理器中,选择要重新调解的文件夹(对我来说,这是我的整个解决方案文件夹),然后选择比较... enter image description here 点击修改过滤器,然后在过滤器文本框中输入:

*.cs;!obj\;!bin\;!packages\;

在此示例中,它将仅在搜索中包含C#文件并在文件夹中排除:bin,obj和packages。

请注意,待定更改列包含文件是否已标记为编辑,添加等等的信息...或者没有...

  • 要标记为编辑(当本地项目具有匹配的服务器项目时),请选择该文件并选择签出以进行编辑...
  • 要标记为添加(当本地项目没有任何服务器项目时),请选择该文件并选择添加文件

最后,我不确定为什么这里没有列出项目(在删除* .cs过滤器之后,仍然没有显示),所以重建解决方案以确保项目更新

+在解决方案中,点击上线的连接按钮(如果显示)。

答案 9 :(得分:0)

我发现在Visual Studio 2015中,当项目打开时,Visual Studio自己发现文件已经在外部进行了修改,并自动检查它们,而无需我做任何事情。以正常方式签入项目保存了外部修改。

答案 10 :(得分:0)

就我而言,以下方法有效(至少我尝试过一次):

  1. 转到待更改面板
  2. 在包含或排除的更改下选择查看选项
  3. 全部显示显示解决方案更改
  4. 之间切换
  5. 根据需要切换回

Refresh TFS Changes

更改“查看选项”似乎会强制刷新已修改的文件。