发生背景
想撤销当前工作区的更改,没有commit也没有add,用了
$ git reset --hard HEAD^1
然后就悲剧了……
解决方案
记得学过git reflog
指令,这个指令输出:
a2b9251 (HEAD -> bugfix/docs) HEAD@{0}: reset: moving to HEAD~1
6e0f50a HEAD@{1}: commit: 优化 UI 总描述
be1b78c HEAD@{2}: reset: moving to HEAD~1
a2b9251 (HEAD -> bugfix/docs) HEAD@{3}: commit: 统一 Console 、 Object 、 Event 、 Time 文档风格
be1b78c HEAD@{4}: commit: 修复首页错误的按钮链接
1c44d0c (origin/develop, develop) HEAD@{5}: checkout: moving from develop to bugfix/docs
1c44d0c (origin/develop, develop) HEAD@{6}: reset: moving to 1c44d0c
5d1cbed HEAD@{7}: commit: 生成静态文档,使用 Git LFS 存储静态文件
0b1bc99 HEAD@{8}: reset: moving to HEAD~
2cf4041 HEAD@{9}: commit: 生成静态文档
0b1bc99 HEAD@{10}: reset: moving to HEAD~
c1ca054 HEAD@{11}: commit: 生成静态文档
据说reset
可以回滚到任意commit
,然后试试
$ git reset --hard 6e0f50a
成功恢复。
发生原因
因为HEAD^1
是上一个commit
,而错误的文件还没有commit上去,导致回滚到了前2个commit。
最后,没事别用git reset --hard
!