Git提交历史查看与日志筛选的全攻略

 更新时间:2026年03月26日 09:32:31   作者:用什么都重名  
本文介绍了Git日志(gitlog)的实用操作指南,主要内容包括:基础用法展示提交历史、显示补丁(-p)与修改统计(--stat)、多样化输出格式(--pretty)设置、图形化分支(--graph)展示,以及多种过滤方式(时间、作者、关键词、路径等),需要的朋友可以参考下

一、基础用法:git log

克隆示例仓库并进入目录:

$ git clone https://github.com/schacon/simplegit-progit
$ cd simplegit-progit

直接运行 git log,默认会按 倒序 列出所有提交: 

$ git log
commit ca82a6dff817……  
Author: Scott Chacon <schacon@…>  
Date:   Mon Mar 17 21:52:11 2008 -0700  

    Change version number

commit 085bb3bcb6……  
Author: Scott Chacon <schacon@…>  
Date:   Sat Mar 15 16:40:33 2008 -0700  

    Remove unnecessary test

commit a11bef06a3……  
Author: Scott Chacon <schacon@…>  
Date:   Sat Mar 15 10:31:28 2008 -0700  

    Initial commit

 每条记录包括提交哈希(SHA-1)、作者、日期和提交信息。

二、显示补丁与统计

2.1-p/--patch:显示补丁

跟随每次提交后直接输出该提交所引入的 diff:

$ git log -p -2

仅显示最近两次提交及其完整代码变更。

2.2--stat:文件修改统计

在每次提交下方汇总修改文件列表及插入/删除行数:

$ git log --stat

输出示例:

 Rakefile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

 若只想看统计汇总行,可用 --shortstat

三、多样化输出格式:--pretty

3.1 预定义格式

oneline:每个提交一行,配合 --abbrev-commit 可更简洁:

$ git log --pretty=oneline

short/full/fuller:分别对应不同程度的信息丰富度。

3.2 自定义格式

使用 format: 自定义输出字段,常用占位符如下:

占位符含义
%H完整提交哈希
%h简短提交哈希
%an作者名称
%ae作者邮箱
%ar作者日期(相对,如 “2 weeks ago”)
%cn提交者名称
%ce提交者邮箱
%cr提交者日期(相对)
%s提交信息摘要

示例:

$ git log --pretty=format:"%h - %an, %ar : %s"

四、ASCII 图形化分支:--graph

在日志前加上分支/合并结构的 ASCII 图示:

$ git log --pretty=format:"%h %s" --graph

示例输出:

* 2d3acf9 Ignore errors from SIGCHLD on trap
* 5e3ee11 Merge branch 'master' of …
|\
| * 420eac9 Add method for current branch
* | 30e367c Timeout code and tests
...

五、限制与过滤日志

5.1 限制条目数量

-n 或 -<n>:仅显示最近 n 条提交

$ git log -3      # 最近三次

5.2 时间范围

  • --since / --after:指定起始日期
  • --until / --before:指定结束日期

支持多种格式,如 "2025-01-15""2 weeks ago"

$ git log --since="2 weeks"

5.3 作者/提交者过滤

  • --author="用户名或邮箱"
  • --committer="提交者"
$ git log --author="Junio C Hamano"

5.4 提交信息关键词:--grep

仅显示提交信息中匹配给定正则/字符串的记录:

$ git log --grep="bugfix"

添加 --all-match 要求同时匹配多个 --grep 或 --author 条件。

5.5 “挑选”改动内容:-S

查找改动中添加或删除某个字符串的提交:

$ git log -S function_name

5.6 按路径筛选

仅显示对指定文件或目录有改动的提交:

$ git log -- path/to/file

记得在路径前加 -- 来区分选项与路径。

六、实战示例

查询 2008 年 10 月由 Junio Hamano 修改 t/ 目录下文件的非合并提交:

$ git log \
  --pretty="%h - %s" \
  --author="Junio C Hamano" \
  --since="2008-10-01" \
  --before="2008-11-01" \
  --no-merges \
  -- t/

 输出最近符合条件的若干提交。

七、常用选项速览

八、总结

git log 是查看、分析项目历史的核心利器。掌握补丁输出、统计信息、格式定制、图形化分支、时间/作者/内容过滤等功能后,你可以:

  • 快速定位引入某行代码的提交
  • 按日期范围或作者筛选日志
  • 以简洁或自定义格式输出,便于脚本处理
  • 可视化分支与合并结构,理清历史脉络

以上就是Git提交历史查看与日志筛选的全攻略的详细内容,更多关于Git历史查看与日志筛选的资料请关注脚本之家其它相关文章!

相关文章

  • VSCode设置默认打开的浏览器的方法

    VSCode设置默认打开的浏览器的方法

    这篇文章主要介绍了VSCode设置默认打开的浏览器的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • VSCode 搭建 x264 源码调试环境的详细步骤

    VSCode 搭建 x264 源码调试环境的详细步骤

    这篇文章主要介绍了VSCode 搭建 x264 源码调试环境的详细步骤,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-10-10
  • 浅析Git 分支的新建与合并

    浅析Git 分支的新建与合并

    这篇文章主要介绍了Git 分支的新建与合并,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-08-08
  • 使用Git实现revert的完整操作步骤

    使用Git实现revert的完整操作步骤

    文章介绍了git revert命令的使用,包括其核心概念、完整操作步骤、进阶场景以及与git reset的区别,git revert是一种安全的代码回退方式,适用于已推送的代码,通过生成新的提交来抵消目标提交的修改,保留历史记录并便于追溯,需要的朋友可以参考下
    2026-01-01
  • 回车和换行有什么区别?我们平时按下的Enter键是回车还是换行

    回车和换行有什么区别?我们平时按下的Enter键是回车还是换行

    如果用过机械打字机,就知道回车和换行的区别了。换行就是把滚筒卷一格,不改变水平位置。回车就是把水平位置复位,不卷动滚筒
    2011-03-03
  • SpringSecurity框架简介及与shiro特点对比

    SpringSecurity框架简介及与shiro特点对比

    这篇文章是SpringSecurity框架的入门篇,主要为大家介绍了SpringSecurity框架简介及与shiro优缺点对比有需要的朋友可以借鉴参考下,希望能够有所帮助
    2022-03-03
  • VS2019中Git源代码管理实现总结

    VS2019中Git源代码管理实现总结

    这篇文章主要介绍了VS2019中Git源代码管理实现总结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • 基于 Serverless +企业微信打造 nCoV 疫情监控小助手

    基于 Serverless +企业微信打造 nCoV 疫情监控小助手

    这篇文章主要介绍了基于 Serverless +企业微信打造 nCoV 疫情监控小助手,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-02-02
  • 获取目录下所有文件名的代码

    获取目录下所有文件名的代码

    获取目录下所有文件名的代码,需要的朋友可以参考下。
    2011-07-07
  • kill一条TCP连接实现方法详解

    kill一条TCP连接实现方法详解

    这篇文章主要为大家介绍了kill一条TCP连接实现方法详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-11-11

最新评论