如何恢复TFS中被误覆盖的Shelveset?
无TFS管理员权限时找回被覆盖Shelveset旧文件的方案
可恢复的前提
你此前曾将旧版本的目标Shelveset拉取到过本地工作区,否则无管理员权限基本无法恢复。
可行操作步骤
- 检查Visual Studio本地历史记录:如果是通过VS关联TFS操作的Shelveset,右键项目中对应的目标文件,选择查看本地历史,VS默认会保留近段时间的文件本地修改快照,找到对应Shelveset拉取时间的版本即可直接恢复。
- 查找TFS本地缓存目录:TFS会将操作过的文件碎片缓存到本地路径
%LOCALAPPDATA%\Microsoft\Team Foundation\[你的TFS版本号]\Cache,按文件修改时间排序筛选覆盖Shelveset的时间点前后的文件,将后缀为.tmp的缓存文件修改为对应文件后缀即可查看内容。 - 排查本地工作区残留:如果你拉取旧Shelveset后没有执行过撤销搁置、覆盖写入的操作,旧版本的文件会直接保留在你的本地工作区对应目录中,直接拷贝即可。
无本地记录的处理说明
如果从未将旧Shelveset拉取到本地,普通用户无权限访问TFS服务器后端的数据库备份、搁置集历史快照,暂时无法自行恢复。此时不要向同名Shelveset提交新内容,避免服务器端残留的旧版本数据被彻底覆盖,后续申请到管理员权限后可由管理员从服务器备份中找回。
内容的提问来源于stack exchange,提问作者Amit
相关产品推荐
相关产品推荐

