git还有很多功能,不过我们最想要的可能是git能保证我们文件的安全,不要丢失我们的数据,这时候可以使用REFLOG功能。如果想要了解的更深入可以查看refs-and-the-reflog,这里我们就看看怎么用的好了。看看一下场景:
找回丢失的commit
-
使用log命令查看当前commit历史
- reset修改
git reset --hard HEAD^
这时候我们的commit已经没啦
- 使用reflog
git reflog
5937df4 HEAD@{0}: reset: moving to HEAD^
c2974a2 HEAD@{1}: commit: add reflog.txt
我们可以看到,reflog保存了另一份日志,做了啥操作git都记录了
- 恢复
git reset --hard HEAD@{1}
丢失的commit找回来了。注意reflog只保存在你自己的机器上。我们恢复的可是HEAD@{1}
啊
找回丢失的分支
我们切换回master分支,并删除一个分支,假定名字叫reflog,我们要怎么找回它呢。实际上只要找到原来分支的tip commit就可以了。来看看吧。
- 不小心删除一个分支
git branch -D reflog
- 找到想要的commit
也可以使用git log --walk-reflogs
去查看reflog
- 重建分支
git branch reflogs HEAD@{1}
-
检查分支是否重建好了
-
检查分支log
可以看到这个branch和原来的一模一样啊