git提交时 commit错误或回滚失败等多种情况解决方案

1,236 阅读2分钟

git提交时 commit错误或回滚失败等多种情况解决方案

一、拉取代码git pull时冲突同时修改失误并commit提交至缓存中,怎么恢复?

  • 1、首先查看所有的commit提交日志,并获取提交唯一id

    • 命令:git log

      commit 09920462c56027fxxxxxxxxxxxxxxxxx (HEAD -> danxiao-revision, origin/danxiao-revision)
      Author: xxxxxx
      Date:   xxxx
      ​
          第一次提交
      ​
      commit xxxxxx
      Merge: xxxx
      Author: xxxx
      Date:   xxxxx
          第二次提交
      

      以上是模拟了两次提交,可以看到,git log查询了所有的commit日志,每条日志都有一个唯一的id

  • 2、此时复制第一次提交的commit唯一id,调用git reset回滚日志

    • git reset --hard 09920462c56027fxxxxxxxxxxxxxxxxx(id)

      注意:git reset命令只是从缓存commit记录中回滚到本地,不会影响到线上代码。

二、回滚失误,通过以上环境回滚了错误的commit日志唯一id,或出现git log命令找不到提交记录

  • 1、首先git log查询commit记录,如果能找到相应日志,执行以上步骤即可

  • 2、git reflog查询回滚记录日志。

    • git reflog

      xxxx HEAD@{1}: xxxx
      123xxxx(id) HEAD@{2}: commit: 回滚
      

      这个记录可以获取到之前git reset回滚的所有记录,并每条记录中也都会有一个唯一`id

  • 2、此时只需要执行git reset -- hard命令重置回滚命令

    • git reset --hard 123xxxx(id)

三、git 日志中啥都找不到通过工具解决

  • 使用工具中的history的快照功能,回滚到相应的代码

    • IntelliJ IDEA一般自带

    1.png

    当然 像Android Studio类似工具都具有这个功能

    • vscode:local history

    image.png

    • 默认这个插件会把所有快照文件放在.history中,如果影响到git提交记得 .gitignore排除
    • 当然这个插件需要在你安装前操作才有效果,所以只是一个预防效果,以防以后出现这种事情,不要问我为什么这么清楚,问就是你们懂的!

四、最后绝招

重写