在TFS中删除本地文件夹

144
我是一个大型项目的一部分,该项目是从TFS映射而来的,在该项目中有一个我已经完成工作的文件夹。我不想要那个文件夹了,所以我想删除我的本地副本。问题在于TFS希望反映这个更改,并从源代码控制中删除该文件夹,但我不想从TFS中删除它。
我能找到的唯一方法是取消映射工作区,然后逐个获取我需要工作的所有其他文件夹。
有没有办法只在本地删除那个文件夹?

你能提供更多信息吗,比如你正在使用哪个版本的TFS和Visual Studio?你是在使用服务器还是本地工作区? - James Reed
@JamesReed 使用兼容性补丁的VS2008,VS2010和VS2012。 TFS 2012。本地工作区(每个Visual Studio版本单独的工作区)。 - James Barrass
2个回答

313

这是一篇较旧的文章,但由于唯一给出的答案在我看来“并不完全正确”,所以我还想回答一下:

我在这里发布了相关博文(德语):blog.nils-andresen.de

如果您有一个本地副本,想要取消获取或取消下载,如下所示:

输入图像描述

只需右键单击文件夹,然后单击“获取特定版本”或“高级”> “获取特定版本”,并指定更改集1

以下是为什么要这样做的原因(摘自Martin Woodward的TFS顶尖提示):

......如果您对文件执行“获取特定版本......”,然后选择更改集1,则文件将在本地被删除,服务器也将知道此事。源代码资源管理器中的文件颜色将从黑色变为灰色,并在最新列中显示短语“未下载”。

更改集1是团队基础服务器实例上的一个特殊更改集。它是设置程序的一部分,仅包含一个东西——您源代码控制树中的根节点($ /)。如果您对任何实际文件执行Changeset 1的获取,则在系统中此时它们将不存在,因此将在本地被删除,并且服务器也将知道此事。

获取特定版本 - 对话框

当过程完成时,“最新”列将显示“未下载”。

输入图像描述

之后,文件系统中任何剩余的文件都可以安全地删除。

5
隐形装置效果还不错,但我用这种方法更成功,而且更简单。 - Nelson Rothermel
5
我更喜欢这种方法。这不需要我在将来可能再次需要这个项目时记住“隐藏”和“激活”的操作。我只需获取最新版本,就可以开始使用了。 - undetected
8
看起来是个不错的 hack。为什么微软不开发直观的用户界面,比如简单的命令“删除本地副本”,以及我最喜欢的“高级 > 获取特定版本”?从什么时候开始,“获取特定版本”成了高级功能?如果他们认为这是高级功能,那么他们一定有很蠢的开发人员。无论如何,感谢您的答复(我用的是 svn/git,无法忍受 TFS) - Pawel Cioch
7
如果你已经删除了本地文件夹并且想要清理你所造成的混乱,这个方法同样适用。 - Hutch
3
命令行等效命令:tf vc get <itemspec> /version:c1 /recursive /overwrite /force。翻译:命令行等效命令:使用tf vc get <itemspec>指令,采用版本c1,递归获取文件并强制覆盖已存在的文件。 - Brain2000
显示剩余8条评论

10

你可以在本地工作区中隐藏文件夹。

通过将工作文件夹状态设置为隐藏,您可以指定在执行获取操作时,本地文件夹不应从服务器复制文件。您可能选择这样做以节省本地磁盘空间。如果之后您决定需要获取这些被隐藏文件夹中的文件,则必须将状态更改为活动状态,然后再执行获取操作。


5
补充一点。要返回到原始状态的已映射状态但没有获取(源代码探测器中为灰色),请删除从遮蔽中剩余的任何内容,然后取消遮蔽。 TFS会询问是否现在执行获取操作。点击“否”。 - James Barrass
5
我选择了使用“屏蔽”而不是“取消下载”。我通常会在顶层执行“获取最新版本”的操作,而屏蔽可以防止在此操作时重新下载特定的文件夹。 - Rudey
这个可行!接受的答案对我没用(因为我正在删除一个分支,它的第一个变更集不是1)。谢谢! - birgersp
这应该是被接受的答案,编辑时加入了@JamesBarrass。它运行快速,不会感觉像是一个hack。 - Brecht

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