概述
相当于版本控制的版本控制
git reflog 可以查看所有分支的所有操作记录
包括已经被删除的 commit 记录
应用场景
分支误删除;
节点误回退
git rebase等等
我们都可以从git reflog中找到操作记录
这时,我们找到要恢复的commitID
执行以下命令即可
git reset --hard [commitID]
假如说回退的节点之后,又添加了一些提交,可以配合使用cherry-pick
git cherry-pick [commitID]
与git log的对比
git log 是顺着当前分支往前去查找提交记录,遍历提交历史。
git reflog不是仓库的一部分,不包含推送、更新和克隆,而是作为本地提交记录的清单。即本地后悔药。
reflog
reflog是一个本地结构,它记录了HEAD和分支引用在过去指向的位置,即HEAD指向的提交的有序列表。
reflog信息没法与其他任何人共享,每个人都是自己特有的reflog。
重要的一点是,它不是永久保存的,有一个可配置的过期时间,reflog中过期的信息会被自动删除。
log
git log显示当前HEAD及其祖先。
也就是说,它打印提交HEAD指向,然后它的父,其父,等等。
它通过递归查找每个提交的父进程遍历回购的祖先。