Skip to content

gw log - Git 日志查看

gw log 命令提供了一个美观、易读的 Git 提交历史查看界面,采用时间线设计和 boxen 边框装饰。

🎯 功能特性

  • 📅 按日期分组 - 按提交日期自动分组显示
  • 🎨 Boxen 边框 - 每个提交都有独立的圆角边框
  • 🔍 交互式浏览 - 默认使用 less 分页器查看
  • 🏷️ 标签和分支 - 清晰展示 Git tags 和分支信息
  • ⚡️ 智能图标 - 根据提交类型自动显示对应图标
  • 🌐 中文时间 - 本地化的相对时间显示

📋 命令格式

bash
# 基础用法(交互式分页查看)
gw log

# 命令别名
gw ls
gw l

🎨 界面展示

实际显示效果

┌─────────────────────────────────────────────────────────────┐
│                    📊 共显示 50 个提交                      │
└─────────────────────────────────────────────────────────────┘

📅 Commits on 2024-01-12

╭─────────────────────────────────────────────────────────────╮
│ ✅ test: 完善commit message格式化测试用例                   │
│                                                             │
│ 👤 zjex committed 2小时前                                   │
│ 🔗 #8d74ffa                                                 │
│ 🌿 HEAD -> main, origin/main                                │
╰─────────────────────────────────────────────────────────────╯

╭─────────────────────────────────────────────────────────────╮
│ 🔧 chore: 删除重复的测试文件                               │
│                                                             │
│ 👤 zjex committed 3小时前                                   │
│ 🔗 #746aa87                                                 │
╰─────────────────────────────────────────────────────────────╯

📅 Commits on 2024-01-11

╭─────────────────────────────────────────────────────────────╮
│ ✨ feat(log): 实现GitHub风格的提交历史查看                  │
│                                                             │
│ 👤 zjex committed 1天前                                     │
│ 🔗 #a1b2c3d                                                 │
│ 🔖 tag v0.3.0                                               │
╰─────────────────────────────────────────────────────────────╯

🎯 界面元素说明

日期分组

提交历史按日期自动分组:

  • 📅 Commits on YYYY-MM-DD - 按日期分组的标题

提交信息格式

每个提交显示在独立的圆角边框内:

╭─────────────────────────────────────────────────────────────╮
│ [icon] [commit-subject]                                     │
│                                                             │
│ 👤 [author] committed [relative-time]                       │
│ 🔗 #[short-hash]                                            │
│ 🌿 [branches]                                               │
│ 🔖 tag [tags]                                               │
╰─────────────────────────────────────────────────────────────╯

字段说明:

  • icon - 根据提交类型自动选择的图标
  • commit-subject - 提交主题(支持子任务解析)
  • author - 提交作者
  • relative-time - 相对时间(中文格式)
  • short-hash - 短提交哈希(7位)
  • branches - 关联的分支信息
  • tags - 关联的 Git 标签

提交类型图标

关键词图标说明
feat, feature新功能
fix, bug🐛Bug修复
docs, doc📚文档更新
style💄代码格式
refactor♻️代码重构
test🧪测试相关
chore🔧杂项任务
perf性能优化
ci👷CI配置
build📦构建相关
revert回滚提交
merge🔀合并分支
release, version🔖版本发布
其他📝默认图标

⌨️ 交互式操作

默认使用系统的 less 分页器,支持以下操作:

导航控制

按键功能
/ k向上滚动一行
/ j向下滚动一行
Page Up / b向上翻页
Page Down / Space向下翻页
Home / g跳到顶部
End / G跳到底部

搜索功能

按键功能
/向前搜索
?向后搜索
n下一个搜索结果
N上一个搜索结果

退出控制

按键功能
q退出查看器
Ctrl+C强制退出

🕒 时间格式

时间显示采用中文本地化的相对时间格式:

智能时间转换

  • 1分钟内 - 显示原始相对时间
  • 60分钟以上 - 自动转换为小时(如:90分钟 → 1小时前)
  • 24小时以上 - 自动转换为天数(如:30小时 → 1天前)
  • 7天以上 - 转换为周数(如:10天 → 1周前)
  • 30天以上 - 转换为月数(如:35天 → 1个月前)
  • 12个月以上 - 转换为年数(如:15个月 → 1年前)

格式化规则

原始 Git 输出会被自动转换:

  • 22 minutes ago22分钟前
  • 3 hours ago3小时前
  • 2 days ago2天前
  • 1 week ago1周前

🎨 颜色和样式

颜色方案

  • 日期标题 - 黄色加粗
  • 提交主题 - 白色加粗
  • 作者名称 - 蓝色
  • 时间信息 - 绿色
  • 哈希值 - 橙色
  • 分支信息 - 浅紫色
  • 标签信息 - 黄色
  • 边框 - 灰色圆角

边框样式

使用 boxen 库提供的圆角边框:

  • 边框样式 - round(圆角)
  • 边框颜色 - gray(灰色)
  • 内边距 - 左右各1个字符
  • 外边距 - 底部1行间距

🔧 高级功能

子任务解析

支持解析包含子任务的提交信息:

bash
# 原始提交信息
feat: 添加用户认证功能 - 实现登录接口 - 添加JWT验证 - 完善错误处理

# 解析后显示
 feat: 添加用户认证功能

 实现登录接口
 添加JWT验证
 完善错误处理

分支和标签分离显示

智能解析 Git refs 信息:

bash
# 分支信息
🌿 HEAD -> main, origin/main

# 标签信息
🔖 tag v1.0.0, tag v1.0.0-beta

默认显示数量

  • 交互式模式 - 默认显示50个提交
  • 非交互式模式 - 默认显示10个提交

🛠️ 技术实现

Git 命令

使用以下 Git 命令获取提交信息:

bash
git log --pretty=format:"%H|%h|%s|%an|%ad|%ar|%D" --date=short -50

格式说明:

  • %H - 完整哈希
  • %h - 短哈希
  • %s - 提交主题
  • %an - 作者名称
  • %ad - 作者日期
  • %ar - 相对时间
  • %D - 引用信息(分支、标签)

分页器配置

使用系统 less 命令,配置参数:

  • -R - 支持ANSI颜色代码
  • -S - 不换行长行
  • -F - 内容少于一屏时直接退出
  • -X - 不清屏
  • -i - 忽略大小写搜索

🚀 使用场景

日常开发

bash
# 查看最近的提交历史
gw log

# 快速浏览(别名)
gw ls
gw l

代码审查

在分页器中使用搜索功能:

bash
# 启动 gw log 后
/feat        # 搜索所有新功能提交
/fix         # 搜索所有修复提交
/author      # 搜索特定作者

版本追踪

查看标签和版本信息:

bash
# 查看包含标签的提交
gw log
# 在分页器中搜索: /tag

🔍 故障排除

常见问题

Q: 分页器无法启动?

bash
# 检查 less 是否安装
which less

# 或设置其他分页器
export PAGER=more
gw log

Q: 颜色显示异常?

bash
# 强制启用颜色
FORCE_COLOR=1 gw log

# 或检查终端支持
echo $TERM

Q: 中文显示乱码?

bash
# 设置正确的编码
export LANG=zh_CN.UTF-8
export LC_ALL=zh_CN.UTF-8

Q: 没有提交记录?

bash
# 检查是否在 Git 仓库中
git status

# 检查是否有提交
git log --oneline -1

📚 相关命令


gw log 提供了一个美观且实用的 Git 提交历史查看体验。通过 boxen 边框装饰和智能的时间格式化,让查看代码历史变得更加直观和愉快。

Released under the MIT License.