• 简单介绍一下 git reflog


    1. 使用场景

    git reflog 用于记录和查看所有对 HEAD 引用所做的历史更改。它不仅记录每一次提交,还包括分支切换、合并、重置等所有可能影响 HEAD 的操作。即使丢失了提交或回滚操作,也可以通过 git reflog 找回和恢复这些操作。

    2. 具体用法

    1、查看 HEAD 的历史记录

    git reflog

    这会列出所有 HEAD 的变动记录。例如:

    1. 8d67418 (HEAD -> main) HEAD@{0}: commit: added feature X
    2. abc1234 HEAD@{1}: checkout: moving from feature to main
    3. def5678 HEAD@{2}: commit: implemented feature Y
    4. 6bde123 HEAD@{3}: merge feature-branch: merge code

    每条记录包括:

    1)提交哈希:对应的提交 ID。

    2)索引编号:表示历史记录的顺序,HEAD@{0} 是最新的操作。

    3)操作说明:描述操作的类型和内容,如 commit、checkout、merge 等。

    2、恢复误删的提交

    假设我们使用 git reset --hard 丢失了某些提交,但这些提交还在 reflog 里。

    可以通过以下步骤找回:

    1)查看 reflog 记录

    1. git reflog
    2. # 假设为以下内容:
    3. 8d67418 (HEAD -> main) HEAD@{0}: reset: moving to HEAD~2
    4. abc1234 HEAD@{1}: commit: added feature Z
    5. def5678 HEAD@{2}: commit: fixed bug Y

    2)恢复特定提交

    git reset --hard def5678

    这会将当前分支重置到 def5678,恢复丢失的提交。

    3、回退到某个特定的状态

    如果我们想回到某个历史状态,可以使用 git reflog 找到对应的记录,然后使用 git reset 或 git checkout:

    1)查找目标记录

    git reflog

    假设发现了一个提交 abc1234 是我们想恢复到的状态。

    2)使用 reset 回退或使用 checkout 创建新分支

    git reset --hard abc1234
    git checkout -b <new-branch-name> abc1234

    4、恢复删除的分支

    假如我们不小心删除了一个分支,但在 reflog 中还能找到它的最后一次提交。

    1. # 1. 查找删除前的分支 HEAD
    2. git reflog
    3. # 假设为如下记录:
    4. 1234567 HEAD@{0}: checkout: moving from deleted-branch to main
    5. abc1234 deleted-branch@{1}: commit: final changes on deleted branch
    6. # 2. 恢复删除的分支
    7. git branch deleted-branch abc1234

    这会重新创建 deleted-branch 并指向 abc1234。

    5、查看特定分支或引用的历史

    git reflog show <branch-name>

    git reflog 默认查看当前分支的全部修改记录,也可以指定分支或引用来查看它们的历史记录。

    3. 总结

    git reflog 是一个强大的 Git 命令,允许我们追踪和恢复任何操作记录。无论进行了哪些操作,reflog 都会记录它们,并且这些记录不会因为垃圾回收(git gc)而立即消失。

  • 相关阅读:
    海藻酸钠-peg-甘草次酸alginate-glycyrrhetinicacid
    线程安全问题及其解决
    AtCoder Beginner Contest 275 【E】【F】
    算法训练 第三周
    Goya主题 WordPress简约时尚类电商模板Woocommerce跨境电商主题优化版
    net/http与gin框架的关系分析
    接口测试 Mock 实战(二) | 结合 jq 完成批量化的手工 Mock
    如何防止金融防欺诈?
    Git工作中用到的常用操作
    探花交友_第1章_项目介绍以及实现登录功能_第2节_项目介绍
  • 原文地址:https://blog.csdn.net/weixin_52648900/article/details/141055957