误删代码后直接推送?别慌!教你几种找回丢失代码的方法(最终靠IDEA救了一命)

背景:

有一次我开发新功能时,为了保留原始代码,手动备份了一份文件。接着,我将原文件重命名,并把新的文件重命名为原始文件名。操作完成后,我没多想,直接推送到了远程仓库。等我再次检查时,发现文件内容还是原始版本的代码,而备份文件已经被我删掉了!

懵了,这意味着我的新功能代码被覆盖了,Git的历史记录中也没有这个修改版本。怎么找回丢失的代码呢?下面是我的寻找之旅,以及最终成功恢复代码的经历。


解决方案:

尝试1:使用 Git Log 查找提交记录

我的第一反应是通过 git log 查看提交记录,看看有没有可能通过回滚提交找回代码

git log

但是,由于误操作直接推送了原始版本的文件,Git的历史记录里根本没有包含我写的新功能代码的提交记录,等于白忙一场。

尝试2:使用 Git Reflog 查看HEAD变动历史

接着,我尝试使用 git reflog,这个命令可以查看所有 HEAD 的移动记录,包括已经 reset、rebase、merge 的操作。

git reflog

这可以让我看到所有最近的提交和修改操作。于是,我找到了这次误操作前的某个提交,试图回滚到那个版本:

git reset --hard <commit_id>

但是,这样操作的问题是会丢失我在那之后的其他修改,不太符合我当前的需求。而且之前我并没有单独提交新功能代码的版本,所以这一招也没能成功帮我找回。

尝试3:通过 Git 文件恢复

我还尝试了使用 git checkout 命令恢复文件历史版本:

git checkout HEAD~1 -- <file_name>

可惜,我已经直接推送了错误的文件版本,这导致这个文件在最近一次提交里并没有新功能代码的修改记录,所以也无法恢复。

最终救命方案:IDEA的 Local History 功能

在经历了一系列 Git 操作无果后,我几乎绝望了。在网上找了些文章,有个方向就是说通过开发工具找回。因为我开发使用的IDEA,于是我开始在IDEA里疯狂翻找,希望能有什么办法找回误删的代码。突然发现IDEA有个功能叫 “Local History”(本地历史记录),可以查看文件最近的编辑记录。

具体操作如下:

  1. 选中菜单栏的File选项
  2. 在File下拉选项中找到LocalHistory选项
  3. 在LocalHistory选项中找到Recent Change选项,就可以看到最近的编辑历史记录

如下图所示:
在这里插入图片描述
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值