为了亲身体验的整个过程,我这里将自己的文件先删除,同时再重启一遍intellij idea,结果会让人心态凉凉。也许有人会说你直接进去再拉一遍项目,不就行了吗? 抱歉今天我这台机器不知道抽了什么风,你们轻蔑的想法值得提倡和认同,但是在我这里已经试过不下十遍了,其中重新启动intellij idea也有五六遍。
The selected changes affect directories and no files, so they cannot be shelved
一、出现的问题
我整体的项目结构如图:
废话不多说,我这里先删文件(这里千万别跟风操作,不然就有点凉凉了),在intellij idea的左侧项目资源界面,删除一个模块,这个模块的代码结构如下图所示,
它既包含了若干的文件和若干的文件夹。删掉后的项目结构如下:
重新启动intellij idea,让Ctrl+Z键的记忆功能失效。
这个时候Ctrl+Z键的撤销删除功能已经不能使用了,我尝试再拉了一遍项目的源码,可是左侧的项目文件内容中,也没有出现我们之前删除的内容。或许只拉一遍没有出现,就多拉几遍吧,好吧,我试试,但愿吧,如下:
第四次之后,我心态崩了的同时,我们试着重新尝试另一种方式,试试看:
得到的结果是一样的,该怎么办呢? 把整个项目都删掉重新拉取云端的代码,还是默默选择回滚代码,这些方法都不可行,万一我修改了几天几夜的bug,那么岂不是白改了吗?别急,下面是解决方法:
二、解决方法
1、找到误删除的内容,或者是TFS拉取项目文件不完全的部分,或者是TFS 忽略的文件。
首先,鼠标选中项目的根目录,记住只选中项目的根目录,不用右键。
依次选择菜单栏中的 “VCS” -> "Shelve Changes .." ,在打开的Shelve Changes 面板中仅仅勾选灰色的文件。
2、双击该灰色的文件,在弹出的窗口中,把 “Include into commit” 勾选,这个很重要
(****如果不勾选的话,当你按下Shelve Changes按钮时,会包以下的错误 :
错误:" The selected changes affect directories and no files, so they cannot be shelved "
**)
当你勾选之后,到这里,恭喜你,你辛苦了几个星期的代码又恢复了!!!!如果试了一次代码,还是没有完全恢复,建议再试一遍,当然这种情况是非常罕见的。
3、恢复不完全现象解决方法。
我这里在恢复的过程中被我强制打断,出现了文件恢复不完全的现象 :
同时在Shelve Changes面板中已经没有了待恢复的文件,这下子该怎么办呢?
重新选择,从云端仓库再导一遍代码回来,在 " Update Project" 面板中,一定要把 “ Recursively process child folders ” ,勾选上,再点击OK即可。
至于为什么一定要把 “ Recursively process child folders ” 勾选上,在我认为它可以将项目的部分子结构文件进行递归获取回本地。
在弹出的窗口中,选择“Yes”即可。
如果在这个过程中,还是不小心将它No 了,建议重新再操作一遍1和2的步骤。至此,整个的文件恢复已经完成了,代码又回来了,高兴~~!