go clean -modcache 把$GOPATH/pkg/mod 目录文件清空了如何恢复

背景

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按钮(左上角),至此就恢复了
在这里插入图片描述

反思

  • 对不熟悉的命令或者配置再没有彻底搞清楚原理之前不要操作应用,永远对线上怀着敬畏之心
  • 对于未经过充分测试验证的变更,一定要做好备份
  • 对于别人的建议和方法要保持辩证的态度,不可全信,实践出真理
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据引用\[1\]和引用\[2\]的内容,如果你设置了环境变量$GOPATH,Go将默认在$GOPATH/pkg/中下载和导入依赖库,而go.mod文件则是将当前工作目录作为项目根目录,从./pkg/中下载和导入依赖库。因此,当$GOPATH指向go.mod所在目录时,就会产生矛盾。所以,如果你遇到了"$GOPATH/go.mod exists but should not"的问题,可以尝试删除GoLand->settings->project gopath里的设置,这样就可以解决这个问题了。\[2\]另外,从Go1.13开始,使用Go Modules管理Go项目,放弃了$GOPATH,所以如果你使用的是较新版本的Go,可以考虑使用go mod来管理项目。\[3\] #### 引用[.reference_title] - *1* *3* [【解决方案:unset GOPATH】$GOPATH/go.mod exists but should not](https://blog.csdn.net/weixin_43958105/article/details/114801895)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [$GOPATH/go.mod exists but should not](https://blog.csdn.net/weixin_47188171/article/details/125001538)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值