当前位置: 首页 > article >正文

HOW - 查看分支创建时间(含 git reflog 和 git log 区别)

背景&问题

问题一:查看分支创建时间

有时候就是需要查看分支创建时间,可以通过 git reflog

问题二:提取分支指定变更

在 HOW - 基于master的a分支和基于a的b分支合流问题 中我们介绍过 “重建 b 分支(如果冲突过多,建议此方式)” 方案,里面就需要提取分支指定变更,将 b 的变更引入 b_new。对于这个问题,我们就需要一种方法去获取这个分支自己进行了哪些 Commit 变更,即 git reflog

认识 git reflog 命令

在 HOW - Git 使用(中)- 常用命令和技巧 中我们也介绍过:它提供了一种方式来查看 HEAD 和其他分支引用在仓库的历史记录中的所有变动。这对于找回丢失的提交或者理解操作历史非常有用。

git reflog

这个命令会显示 HEAD 引用的所有变动历史。每一行都会列出一个变动的记录,包括引用的新值和旧值,以及执行该变动的命令和时间。例如:

1c35d40 HEAD@{0}: commit (amend): Updated README file
4e2f3d2 HEAD@{1}: commit: Added README file
a2b4c6d HEAD@{2}: checkout: moving from master to feature

git log 和 git reflog

  • git log 是用来查看代码提交历史的工具,是仓库状态的“时间线”。
  • git reflog 是用来查看本地操作历史的工具,是你的操作日志。

git loggit reflog 的区别

两者都是 Git 中查看历史的工具,但它们的用途和信息来源不同:

1. git log

  • 作用:查看提交历史。
  • 来源git log 显示的是 提交对象(commit object) 的历史记录,也就是代码库中的提交记录。
  • 主要特点
    • 显示的是分支或仓库中实际存在的提交。
    • 反映代码的演变过程,包括提交信息、提交人、日期、提交内容等。
    • 不会显示本地的操作记录(如分支切换、合并等)。

2. git reflog

  • 作用:查看引用(HEAD、分支指针等)的移动历史。
  • 来源git reflog 显示的是 本地仓库中的操作记录,包括提交、分支切换、合并、重置(reset)、变基(rebase)等。
  • 主要特点
    • 包含所有操作的记录,即使这些操作未被提交到远程仓库。
    • 是本地操作的日志,不会与远程同步。
    • 常用于恢复误操作,比如找回丢失的提交或撤销错误的 reset

两者的主要区别

属性git loggit reflog
显示内容提交历史(commit 记录)引用的操作记录(HEAD、分支指针的变动历史)
数据来源仓库的提交对象本地的操作日志
包含范围仅显示提交的记录包括分支切换、重置、合并等操作
用途查看代码变更历史恢复误操作、查看分支或 HEAD 的历史状态
是否本地独有否,提交会同步到远程是,仅记录本地操作
典型场景分析代码提交历史、调试代码恢复误删除的分支或提交,查找 HEAD 的变动记录

使用场景举例

  1. 查看代码提交历史
    如果你想分析代码如何演变、某个功能何时被引入,可以使用 git log 查看提交记录。

  2. 找回误删除的提交
    如果你误用了 git reset --hard 丢失了一些代码,可以用 git reflog 找回丢失的提交。

  3. 查找分支切换记录
    想知道某个分支何时创建、切换到何时,可以用 git reflog 查看操作历史。

查看分支创建时间

在 Git 中,可以通过查看分支的第一个提交记录来判断分支的创建时间。以下是一些方法来查看分支的创建时间:

方法 1: 查看分支的第一个提交

  1. 切换到目标分支

    git checkout <branch-name>
    
  2. 查看该分支的第一个提交

    git log --reverse
    

    这会从最早的提交开始显示日志,第一个提交通常是分支创建时的提交。

  3. 限制输出日志为第一个提交
    如果只想查看第一个提交,可以使用以下命令:

    git log --reverse --pretty=format:"%h %an %ad %s" -1
    

    输出示例:

    a1b2c3 John Doe Wed Jan 22 14:30:00 2025 +0800 Initial commit
    

方法 2: 使用 git reflog show

Git 会记录所有引用(HEAD、分支等)的移动历史,可以通过 reflog 查看分支的创建时间:

  1. 查看目标分支的引用历史

    git reflog show <branch-name>
    
  2. 找到分支第一次被创建的记录
    记录类似:

    abc1234 <branch-name>@{0}: branch: Created from master
    

    时间戳会显示在该记录的后面。

方法 3: 脚本精确查找分支创建时间

如果你想通过一个单行命令快速查找分支的第一个提交时间,可以运行以下脚本:

git log --pretty=format:"%h %ad" --reverse <branch-name> | head -n 1

方法 4: 借助 GUI 工具

如果你使用的是 Git 图形化工具(如 SourceTree、GitKraken 或 VSCode 的 Git 插件),可以在分支历史中轻松查看分支的第一个提交时间。

注意事项

  • 分支的创建时间可能与第一个提交的时间略有不同,特别是如果分支从另一个分支创建但没有立即进行提交的情况下。
  • 如果你在分支上直接修改了历史记录(如 rebasecherry-pick),分支的历史可能会被重写,影响创建时间的判断。

http://www.kler.cn/a/515365.html

相关文章:

  • 1. 基于图像的三维重建
  • 使用Websocket进行前后端实时通信
  • 光谱相机在智能冰箱的应用原理与优势
  • 开源AI崛起:新模型逼近商业巨头
  • 回归预测 | MATLAB基于TCN-BiGRU时间卷积神经网络结合双向门控循环单元多输入单输出回归预测
  • Linux C\C++方式下的文件I/O编程
  • 【27】Word:徐雅雯-艺术史文章❗
  • 代码随想录算法【Day29】
  • 产品经理面试题总结2025【其一】
  • BUUCTF_Web(UPLOAD COURSE 1)
  • three.js实现裸眼双目平行立体视觉
  • #漏洞挖掘# 一文了解什么是Jenkins未授权访问!!!
  • 深入解析 Spring AI 系列:解析返回参数处理
  • 机器学习-K近邻算法
  • C# 匿名函数
  • 计算机网络 (56)交互式音频/视频
  • C语言初阶牛客网刷题——HJ73 计算日期到天数转换【难度:简单】
  • 文献精汇|121 模型:用于高收益交易的 LSTM 驱动的协整策略
  • 读写和解析简单的 nc 文件
  • flutter入门系列教程<2>:Http请求库-dio的使用
  • 二叉树的递归遍历力扣--145,144,94
  • 【深度学习】嘿马深度学习笔记第11篇:卷积神经网络,学习目标【附代码文档】
  • WPF自定义布局--瀑布布局
  • Kafka后台启动命令
  • 详细介绍:Kubernetes(K8s)的技术架构(核心概念、调度和资源管理、安全性、持续集成与持续部署、网络和服务发现)
  • wx036基于springboot+vue+uniapp的校园快递平台小程序