背景
scm编辑代码不通过(其实是因为go镜像低于本地go版本导致),oncall 同学抛过来一条命令go clean -modcache && go mod tidy,我对go clean -modcache 是不太清楚真正含义的,以为就是清空下项目的依赖包而已(后来才知道oncall同学也没有对其正确认知),于是就很信任的复制粘贴,按下回车键,然后瞬间慌了,同时Goland打开的三个项目窗口都闪了一下然后代码都不见了,很慌,因为还有未提交的代码,啥都不说了,开始找恢复的方法吧
go clean -modcache做了什么
会清空$GOPATH/pkg/mod 下的文件,只保留目录结构
由于历史原因我的个人代码放到了此目录下(其实应该放到$GOPATH/src 下),所以我也有责任,论规范的重要性
代码恢复
了解到代码编辑器一般都会自带缓存,goland也有,按左键弹出如下框,点击Show History 查看缓存的历史版本
选择一个操作删除命令时间之前的版本,17点41删除的,那就选择16点52的版本,然后点击revert按钮(左上角),至此就恢复了
反思
- 对不熟悉的命令或者配置再没有彻底搞清楚原理之前不要操作应用,永远对线上怀着敬畏之心
- 对于未经过充分测试验证的变更,一定要做好备份
- 对于别人的建议和方法要保持辩证的态度,不可全信,实践出真理