手册页说日志显示提交日志,而 reflog 管理 reflog 信息。reflog 信息到底是什么,日志没有什么?日志似乎更详细。
git log显示当前的 HEAD 及其祖先。也就是说,它打印 HEAD 指向的提交,然后打印其父级、父级等。它通过递归查找每个提交的父级来遍历 repo 的祖先。
git log
(在实践中,一些提交有多个父级。要查看更具代表性的日志,请使用类似的命令git log --oneline --graph --decorate。)
git log --oneline --graph --decorate
git reflog根本没有遍历 HEAD 的祖先。reflog 是 HEAD 指向的提交的有序列表:它是您的 repo 的撤消历史记录。reflog 不是 repo 本身的一部分(它与提交本身分开存储)并且不包含在推送、获取或克隆中;这纯粹是本地的。
git reflog
另外:了解 reflog 意味着一旦提交,您就不会真正丢失 repo 中的数据。 如果您不小心重置为较旧的提交,或错误地重新设置基准,或任何其他视觉上“删除”提交的操作,您可以使用 reflog 查看您之前的位置并git reset --hard返回到该 ref 以恢复您之前的状态。请记住,refs 不仅意味着提交,还意味着它背后的整个历史。
git reset --hard