像 TFS 这样的源代码控制系统都以非常相似的方式工作。他们将服务器的代码版本视为“代码”——它是主副本,由服务器“拥有”。然后,您可以在您的 PC 上获取代码的副本(通过添加工作区映射,您可以告诉它您希望它把这个副本放在哪里)。您可以对代码副本进行更改,然后将它们签入以将它们应用回服务器上代码的主版本。
因此,如果您更改工作区映射(例如,将代码副本的位置从文件夹 A 更改到文件夹 B),您告诉源代码控制系统的是“请拿走位置 A 中的代码副本,并将其放入 B"。所以这就是它删除所有“你的”代码的原因。这不是“你的”代码,它是服务器代码的副本——你要求它把它放在你 PC 上的其他地方……它确实做到了。
但是,如果您编辑了工作区中的任何代码,则文件将被签出,在这种情况下,TFS 会知道您有待处理的更改,并且它不应该删除这些文件 - 它应该报告一个尝试更改包含待定更改的工作区映射时出错。
唯一不会发生这种情况的方法是,如果您手动将文件更改为可写并在 Visual Studio/TFS 之外对其进行更改,这样 TFS 就不会知道您进行了更改。如果你“偷偷”更改了一些文件,TFS 可能认为它们没有改变,因此将它们永久删除。这些文件可能不会出现在文件恢复工具中,因为通过要求 TFS 重新定位工作区来删除文件,然后立即重新获取它们(进入新文件夹),这几乎肯定会覆盖已删除的数据文件。
如果您的更改可能已被签入,那么您可以像这样找到它们:在 TFS 源代码控制视图中转到您的团队项目。右键单击项目并选择“查看历史记录”选项。这将以相反的历史顺序列出项目的所有签入 - 如果您签入,那么您应该在此处看到您的签入。(您可以双击历史记录中的任何变更集条目以查看已更改的文件列表,如果您右键单击任何文件,您可以“比较...”以查看确切说明所做更改的差异)
如果更改不在您的签入历史记录中,那么恐怕您已经丢失了它们。
您可能已经学会了这一点,但是学习正确使用源代码控制等工具很重要——它们是有用且强大的工具,但如果您不了解它们的工作原理,它们可能会很危险。