如何在TFS上撤销“获取最新版本”操作

24

我正在使用VS2008和VS2010与TFS合作,TFS集合中有多个项目。

我将TFS根目录映射到本地驱动器以保留TFS文件夹结构,并获取了几个子文件夹的最新版本。

我还下载了一个不需要的文件夹,所以我删除了本地文件夹内容,但现在在TFS中,我看到该文件夹为黑色且“已获取最新版”。如何告诉TFS我先前已经将一个文件夹删除了?


1
除了重新创建你的工作空间,我认为这是不可能的。 - stuartd
1
@stuartd:很棒,好像撤销这样的操作相当普遍...:? - Ignacio Soler Garcia
1
右键单击您不想在本地保存的文件夹并进行隐藏。然后,TFS将忽略它。 - MBulava
1
当然,如果您想再次从TFS获取本地删除的文件夹,可以单击“获取特定版本”,选择最新版本,然后选中“即使本地版本与指定版本匹配也覆盖所有文件”的复选框。我不确定您需要什么答案,因此留下了两个不同的评论。 - MBulava
@MBulava:我想要做的是更新 TFS 服务器,使其知道我从工作区中删除了一些文件,以便在源代码资源管理器上显示正确的信息。 - Ignacio Soler Garcia
当然,你也可以执行“获取特定版本”来还原文件到之前的TFS版本,但是在此期间已经对该文件进行的任何本地更改都将丢失。 - Paul
3个回答

25

我认为问题在于你和TFS对于“最新版本”的理解不一致。 在TFS中,“最新版本”指的是自你上次获取最新版本以来服务器上没有发生任何更改。它并不意味着硬盘上的内容与服务器上的最新版本相同。 因此,TFS显示了它应该显示的内容,请参见此问题以了解更多信息:为什么TFS Get Latest不能获取最新版本?

对于你不想在本地硬盘上保存的服务器文件夹,建议使用“隐藏”功能,如MBulava所述。(右键单击文件夹-> 隐藏)。如果你不希望在硬盘上保存某个文件夹,我推荐使用这种方法,因为它不会被下载,除非你解除隐藏,而且它将以灰色显示,并标注为“未下载”。

如果你想查看硬盘上的内容与服务器版本之间的差异,可以使用“比较文件夹”功能。它会显示硬盘上的文件夹已被删除。

如果你想将文件夹映射到灰色(就像你没有下载的其他文件夹一样),可以将其隐藏,然后解除隐藏,但在现在不下载时回答“否”。这与一开始不下载文件夹的效果相同。


1
这将非常有用,因为如果我不小心下载了某些东西,我不想在删除本地文件后还看到该代码。我想知道硬盘上的内容是否与TFS中的内容匹配。自从最后一次执行“获取最新版本”以来发生了什么,我(是谁?)并不关心。 - Ignacio Soler Garcia
我根据您的评论进行了一些编辑。这些解决方案中有哪些符合您的要求? - Mixopteryx
2
啊哈,#4 就是我要找的。我希望它看起来像我从未对其进行过获取操作。谢谢 @Mixopteryx - Spike0xff

11

Martin Woodward写了一篇很酷的博客文章TFS顶级提示#11-从本地文件系统中删除源代码控制文件,解决了这个问题,而不必使用cloaking方法。

您需要使用获取特定版本(Get Specific Version),将版本类型更改为Changeset,并指定1作为Changeset编号。他的博客文章详细介绍了为什么这样做可以解决该问题。我已经验证了在Visual Studio 2013、2015和2017的Team Explorer中的此行为。

更新:

如果您有一堆要处理的文件夹,可以使用以下命令行,将folderName替换为Client itemspec或等效的Server itemspec

tf.exe get folderName /v:1 /recursive

0

Mbulava的建议是使用“隐身衣”将文件和/或文件夹保留在TFS服务器上,但会从您的本地版本和“获取最新版本”请求中删除文件/文件夹。

如果您已从本地目录中删除文件,并且想让这些更改出现在服务器上,则需要转到TFS目录,选择要删除的文件,右键单击并删除文件夹。然后,您需要将待删除更改“签入”到TFS服务器中。 TFS服务器将随后删除文件/文件夹。


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