(相关命令:git reset、git log、git reflog,要看文档的话用--help。)
这是一次愚蠢的行为之后的总结……避免我之后忘记了解决方法【逃
get reset --hard是一个非常危险的行为。
比如该项目,git log显示:
$ git log
commit cc53a1925fb7895ad88d155a43f3012249615919 (HEAD -> master)
Author: ***
Date: Mon Mar 12 16:47:00 2018 +0800 version commit 1ca078c22c4b7d5c79214069cb1be8d4122dbe7e
Author: ***
Date: Mon Mar 12 16:46:46 2018 +0800 version
此时执行git reset --hard HEAD^(回退为HEAD前一次提交):
$ git reset --hard HEAD^
HEAD is now at 1ca078c version
此时再次查看git log,发现version 1提交没有了。git log只查看当前提交的祖先。
$ git log
commit 1ca078c22c4b7d5c79214069cb1be8d4122dbe7e (HEAD -> master)
Author: ***
Date: Mon Mar 12 16:46:46 2018 +0800 version
此时可以git reflog,即查看每一次HEAD的变化,并reset到需要的commit。
$ git reflog
1ca078c (HEAD -> master) HEAD@{}: reset: moving to HEAD^
cc53a19 HEAD@{}: commit: version
1ca078c (HEAD -> master) HEAD@{}: commit (initial): version $ git reset cc53a19 --hard
HEAD is now at cc53a19 version
或者用git log -g(即--walk-reflogs)查看每一次HEAD的变化的日志,并进行reset。(代码略