前置知识: Git

git-log详解

00:00
2 min Intermediate 2026/6/14

git log多种格式与过滤选项:自定义输出、搜索过滤与可视化。

1. git log 基础

1.1 基本用法

git log                       # 查看完整日志
git log -5                    # 最近5条
git log --oneline             # 单行格式
git log --oneline -10         # 最近10条,单行格式

1.2 输出格式

# 默认格式
git log
# commit 9a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t
# Author: Zhang San <zhang@example.com>
# Date:   Sat Jun 14 10:00:00 2026 +0800
#
#     feat: add user authentication

# 单行格式
git log --oneline
# 9a1b2c3 feat: add user authentication

# 简短格式
git log --abbrev-commit

2. 自定义输出格式

2.1 预定义格式

# 单行
git log --oneline

# 紧凑
git log --oneline --graph --decorate

# 详细
git log --format=full

# 完整
git log --format=fuller

# 邮箱格式
git log --format=email

# 原始格式
git log --format=raw

2.2 自定义格式字符串

# 常用占位符
git log --format="%h - %an, %ar : %s"
# 9a1b2c3 - Zhang San, 2 hours ago : feat: add user auth

# 占位符参考
占位符说明示例
%H完整哈希9a1b2c3d4e5f...
%h哈希9a1b2c3
%T完整 tree 哈希
%t短 tree 哈希
%an作者Zhang San
%ae作者邮箱zhang@example.com
%ad作者日期
%ar作者日期2 hours ago
%cn提交者名
%s提交消息feat: add auth
%b提交消息正文
%d引用装饰(HEAD -> main)
%f消息文件安全版本

2.3 实用格式

# 美观的单行格式
git log --format="%C(yellow)%h%C(reset) %C(green)(%ar)%C(reset) %s %C(blue)<%an>%C(reset)"

# 图表格式
git log --oneline --graph --all --decorate

# 变更统计
git log --stat

# 每次提交的差异
git log -p

# 每次提交的差异(仅文件名)
git log --name-only

# 每次提交的差异(文件名+状态)
git log --name-status

3. 过滤选项

3.1 按数量

git log -5                    # 最近5条
git log -1                   # 最近1条

3.2 按日期

git log --since="2026-01-01"         # 2026年1月1日以来
git log --after="2026-01-01"         # 同上
git log --until="2026-06-14"         # 2026年6月14日之前
git log --before="2026-06-14"        # 同上
git log --since="2 weeks ago"        # 最近2周
git log --since="3 days ago"         # 最近3天
git log --after="yesterday"          # 昨天

3.3 按作者

git log --author="Zhang San"         # 按作者名
git log --author="zhang@example.com" # 按邮箱
git log --author="zhang"             # 模糊匹配

3.4 按提交消息

git log --grep="feat"                # 消息包含 "feat"
git log --grep="fix\|bug"            # 正则匹配
git log --grep="auth" -i             # 忽略大小写
git log --all-match --grep="feat" --grep="auth"  # 同时匹配

3.5 按文件

git log -- file.txt                  # 涉及指定文件的提交
git log -- src/                      # 涉及指定目录的提交
git log -p -- file.txt               # 显示文件差异
git log --follow file.txt            # 跟踪重命名

3.6 按引用范围

git log main..feature                # feature 有而 main 没有的提交
git log feature..main                # main 有而 feature 没有的提交
git log main...feature               # 两边独有的提交
git log --left-right main...feature  # 标注属于哪边

4. 图形化显示

4.1 内置图形

# ASCII 图形
git log --oneline --graph

# 带分支标签
git log --oneline --graph --decorate

# 所有分支
git log --oneline --graph --all

# 带日期和作者
git log --graph --format="%h %ad %an %s" --date=short

4.2 图形化工具

工具类型
gitk内置基础图形
tig终端终端中的交互式查看器
GitKraken桌面专业 Git 客户端
SourceTree桌面免费的 Atlassian 客户端
VS Code Git Graph插件VS Code 内集成

5. 实用别名

[alias]
    lg = log --oneline --graph --decorate
    lga = log --oneline --graph --all --decorate
    ll = log --format="%C(yellow)%h%C(reset) %s %C(cyan)(%cr)%C(reset) %C(blue)<%an>%C(reset)"
    ls = log --stat
    lp = log -p
    lf = log --follow
    recent = log --since='2 weeks ago' --oneline
    who = shortlog -sn

知识检测

学习进度

-- 已学文档
--% 知识覆盖率

学习推荐

专注模式