本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点
如果我已经执行了git reset --hard XXX
,之前的commit
的内容还能找回来吗?
首先,经过之前的学习,我们起码知道,执行完 reset
回滚commit以后,之前的commit其实没有被删除,肯定还在的。
要找回之前的 commit
的内容,那我们势必得知道对应的commit 的SHA-1值吧,这个时候用git log
是看不到的。
之前我们曾经提到过,就是 .git
目录下有一个 logs
目录,里面记录了所有HEAD改变的记录,包括分支操作(新建、切换等),commit操作(新commit,reset等)。那我们之前 reset
也是更改了HEAD,所以这里面肯定会有我们的记录。可以用下面的方法拿到:
//是的,你没看错,加个 -g 参数就看得到了
git log -g
//或者是下面的命令
git reflog
拿到之前的 commit
信息之后,我们就能找回对应的提交记录了
//可以新建一个分支指向对应的提交
git branch branchName commitId
找回删除的文件
上面 撤销add 一节中我们用的命令并不会删除工作目录中的文件,但是万一你一不小心漏掉了 --cached
参数,那效果就不一样了,会把工作目录和暂存区中的文件记录都会删除。
可以从垃圾桶里面还原出来吗?
rm