错误使用 idea git push 引起的血案

操作不当导致一天内写的代码丢失,最后依靠 idea 的本地历史(local history)找回。

过程:

  1. 使用 idea 的 VSC 工具进行 git commit (用这个主要是这个带有自动整理代码,优化导入的功能,还会分析代码)

  2. 想了想应该只有我有最新的版本了,别人不会有更新的。于是直接点开 git push (以前都是先使用 git pull 的,这次脑残了)

  3. 提示有冲突,是否进行合并,选择是,自动合并完毕后。编译代码失败。一看,我一天写的写的定时消息通知不见了。

  4. 我的妈啊,怎么直接没了,赶紧打开 bash 用 git reflog 结果如下:(有两处的 commit 信息是 add: 加入各处通知)

    TIM截图20180828233327.png

  5. ee2fa85 直接变成了 merge 节点,而且我的提交直接就没有了,恢复不了。git reset --hard 只能回到原来的版本,但是记录里面根本没有我提交的版本

  6. 救命稻草:idea 本地历史,idea 提供了磁盘上所有文件的修改记录,并且标注了时间,after push 、build 的操作就记录了下来,(这么吃内存也是有好处)于是我凭记忆恢复了我一天写的代码。

  7. 最后再提交、推送到远程库

  • 从 gitea 上面的提交图来看,也说明了这次血案的原因


    TIM截图20180828232021.png

    由提交图可以看到,我提交了一个 merge 节点,用于自动合并与其他人的代码版本。这个节点应该是 git 自动生成的,提交信息里面应该有 merge branch 字样,但是这个提交直接用我的 commit 信息了。


其实还有点疑惑的地方,有时间复现一下,看一看到底是怎么回事。

你可能感兴趣的:(错误使用 idea git push 引起的血案)