Git Reflog介绍及使用示例--解决你的所有git覆盖问题

633 阅读2分钟

之前有一个项目没有建新的分支,强制回滚了(--hard),git log的提交版本都被覆盖掉了

Git 是一个强大的分布式版本控制系统,能够让开发者轻松地管理代码变更和协作开发。在使用 Git 的过程中,难免会遇到需要回退或恢复某些操作的情况。这时,git reflog 命令就显得尤为重要。本文将详细介绍 git reflog 的概念、用途及一些常见的使用示例。

什么是 Git Reflog?

git reflog 是 Git 的引用日志(Reference Log),它记录了所有对分支引用(如 HEAD、分支名)的更新操作。无论是提交(commit)、合并(merge)、重置(reset)还是检出(checkout),reflog 都会记录这些操作。这使得即使你误操作导致代码丢失,也可以通过 reflog 找回之前的状态。

git log 与 git reglog的区别

git log

  • git log 用于查看项目的提交历史。
  • 它显示的是项目的正式提交记录,即所有在当前分支上的提交。

用法

git log

输出

  • git log 的输出包括每个提交的提交哈希(SHA-1)、作者、提交日期和提交信息。

  • 默认情况下,它只显示当前分支的提交记录。

  • 适用场景

  • 用于查看项目的开发历史。

  • 用于查找特定的提交或了解项目的变更记录。

git reflog

功能

  • git reflog 用于查看本地仓库的引用日志。
  • 它记录了所有对引用(如分支和 HEAD)的移动,包括那些已经被删除的引用。

用法

bash复制代码
git reflog

输出

  • git reflog 的输出包括每个引用的移动记录,显示了旧的和新的提交哈希、操作类型(如 commitresetcheckout 等)以及操作的时间。

  • 它不仅显示当前分支的记录,还包括其他分支和 HEAD 的历史移动。

  • 适用场景

  • 用于恢复误删的分支或提交。

  • 用于调试和了解仓库状态变化的详细历史。

  • 特别有用在恢复丢失的提交或分支时。

总结

假如强制回退版本,使用git reset --hard <commit-hash> ,这样操作完以后,会丢失之前的提交记录,
这时就可以通过git reflog来查看之前提交的版本,来进行恢复
  • git log:显示的是项目的正式提交历史,适用于查看项目的开发变更记录。
  • git reflog:显示的是本地仓库的引用移动历史,适用于调试和恢复误操作。