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