操作不当导致一天内写的代码丢失,最后依靠 idea 的本地历史(local history)找回。
过程:
使用 idea 的 VSC 工具进行 git commit (用这个主要是这个带有自动整理代码,优化导入的功能,还会分析代码)
想了想应该只有我有最新的版本了,别人不会有更新的。于是直接点开 git push (以前都是先使用 git pull 的,这次脑残了)
提示有冲突,是否进行合并,选择是,自动合并完毕后。编译代码失败。一看,我一天写的写的定时消息通知不见了。
-
我的妈啊,怎么直接没了,赶紧打开 bash 用
git reflog
结果如下:(有两处的 commit 信息是 add: 加入各处通知)
ee2fa85
直接变成了 merge 节点,而且我的提交直接就没有了,恢复不了。git reset --hard
只能回到原来的版本,但是记录里面根本没有我提交的版本救命稻草:idea 本地历史,idea 提供了磁盘上所有文件的修改记录,并且标注了时间,after push 、build 的操作就记录了下来,(这么吃内存也是有好处)于是我凭记忆恢复了我一天写的代码。
最后再提交、推送到远程库
-
从 gitea 上面的提交图来看,也说明了这次血案的原因
由提交图可以看到,我提交了一个 merge 节点,用于自动合并与其他人的代码版本。这个节点应该是 git 自动生成的,提交信息里面应该有 merge branch 字样,但是这个提交直接用我的 commit 信息了。
其实还有点疑惑的地方,有时间复现一下,看一看到底是怎么回事。