更改映射时TFS删除了我的文件

时间:2013-04-28 19:19:13

标签: version-control visual-studio-2012 tfs

拥有相当大的解决方案,其中包含大量代码。由于TFS的一些问题,我想创建一个新的“干净”存储库。我删除了映射到旧存储库,并尝试创建新映射。这导致了一个错误,即已经有一个映射到我的解决方案。我去了Source Control Explorer - > Workspaces并删除了我的解决方案的映射。之后,我能够将我的新存储库映射到我的解决方案。

但是当我检查我的硬盘时,我几乎心脏病发作:TFS删除了我的所有代码文件!目录和依赖项仍然存在,但我的所有项目文件,我的解决方案文件和所有代码都消失了!

请StackOverflow,帮帮我吧!这是很多工作现在已经消失,我真的非常迫切需要它:(

编辑:我目前正在尝试使用几个文件恢复工具(如Recuva)恢复我的文件,但没有一个可以找到任何已删除的更改。但是这些文件真的不见了,Windows搜索找不到它们,也没有隐藏它们。谁能告诉我为什么会这样?那么文件仍然在我的SSD上吗?

3 个答案:

答案 0 :(得分:5)

TFS等源控制系统的工作方式非常相似。他们将服务器的代码版本视为“代码” - 它是主副本,并由服务器“拥有”。然后,您可以在PC上获取代码的副本(通过添加工作区映射,告诉它您希望它放在此副本的位置)。您可以更改代码副本,然后检入它们以将它们应用回服务器上代码的主版本。

因此,如果您更改工作区映射(例如,将代码副本的位置从文件夹A更改为文件夹B),您告诉源代码管理系统的内容是“请取走所在代码的副本位置A,并将其放入B“。所以这就是它删除所有“你的”代码的原因。它不是“你的”代码,它是服务器代码的副本 - 你要求它把它放在你PC上的其他地方......所以它确实如此。

但是,如果您编辑了工作区中的任何代码,那么文件就会被检出,在这种情况下,TFS会知道您有待处理的更改,并且它不应该删除这些文件 - 它应该您尝试更改包含挂起更改的工作空间映射时报告了错误。

这种情况不会发生的唯一方法是手动将文件更改为可写并在Visual Studio / TFS之外对其进行更改,以便TFS不知道您已进行了更改。如果您“秘密”更改了某些文件,TFS可能认为它们没有更改,因此会永久删除它们。这些文件可能不会显示在文件恢复工具中,因为要求TFS重新定位工作区,您可以将其删除,然后立即重新获取它们(进入新文件夹),这几乎肯定会覆盖已删除的数据文件。

如果您的更改可能已经签入,那么您可以这样找到它们:在TFS源代码管理视图中转到您的团队项目。右键单击项目,然后选择“查看历史记录”选项。这将以反向历史顺序列出项目的所有签到 - 如果您签到,那么您应该在此处看到您的签到。 (您可以双击历史记录中的任何变更集条目以查看已更改的文件列表,如果您右键单击任何文件,则可以“比较...”以查看准确说明所做更改的差异)

如果更改不在您的签到历史记录中,那么我担心您已经丢失了它们。

你可能已经学会了这一点,但重要的是要学会正确使用源代码控制等工具 - 它们是有用且功能强大的工具,但如果你不了解它们是如何工作的,它们就会很危险。

答案 1 :(得分:3)

如果在删除映射之前全部检入。来源几乎在回购。但如果没有,它已经变得很遗憾:(

答案 2 :(得分:-1)

对不起您的损失。

TFS没有删除任何内容。您根本就没有签入。如果TFS“删除”了您的代码,那么您将能够在Source Control Explorer中查看历史记录中的代码。您会看到存在针对您的代码的“删除”操作的变更集。

然后,您就可以回滚该变更集并获取所有代码。