31-git-26-reflog

概述

相当于版本控制的版本控制

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指向,然后它的父,其父,等等。

它通过递归查找每个提交的父进程遍历回购的祖先。