4

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

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

请StackOverflow,帮帮我!现在有很多工作已经过去了,我真的非常需要它回来:(

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

4

3 回答 3

5

像 TFS 这样的源代码控制系统都以非常相似的方式工作。他们将服务器的代码版本视为“代码”——它是主副本,由服务器“拥有”。然后,您可以在您的 PC 上获取代码的副本(通过添加工作区映射,您可以告诉它您希望它把这个副本放在哪里)。您可以对代码副本进行更改,然后将它们签入以将它们应用回服务器上代码的主版本。

因此,如果您更改工作区映射(例如,将代码副本的位置从文件夹 A 更改到文件夹 B),您告诉源代码控制系统的是“请拿走位置 A 中的代码副本,并将其放入 B"。所以这就是它删除所有“你的”代码的原因。这不是“你的”代码,它是服务器代码的副本——你要求它把它放在你 PC 上的其他地方……它确实做到了。

但是,如果您编辑了工作区中的任何代码,则文件将被签出,在这种情况下,TFS 会知道您有待处理的更改,并且它不应该删除这些文件 - 它应该报告一个尝试更改包含待定更改的工作区映射时出错。

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

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

如果更改不在您的签入历史记录中,那么恐怕您已经丢失了它们。

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

于 2013-04-28T21:16:24.887 回答
3

如果您在删除映射之前全部签入。来源几乎在回购中。但如果不是,它已经消失了对不起:(

于 2013-04-28T19:23:35.527 回答
-1

对不起你的损失。

TFS 没有删除任何内容。您根本没有将其签入。如果 TFS 已“删除”您的代码,那么您将能够在源代码管理资源管理器的历史记录中看到您的代码。您会看到有一个针对您的代码的“删除”操作的变更集。

然后,您将能够回滚该变更集并获取所有代码。

于 2013-04-28T22:24:13.040 回答