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 ago→22分钟前3 hours ago→3小时前2 days ago→2天前1 week ago→1周前
🎨 颜色和样式
颜色方案
- 日期标题 - 黄色加粗
- 提交主题 - 白色加粗
- 作者名称 - 蓝色
- 时间信息 - 绿色
- 哈希值 - 橙色
- 分支信息 - 浅紫色
- 标签信息 - 黄色
- 边框 - 灰色圆角
边框样式
使用 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 logQ: 颜色显示异常?
bash
# 强制启用颜色
FORCE_COLOR=1 gw log
# 或检查终端支持
echo $TERMQ: 中文显示乱码?
bash
# 设置正确的编码
export LANG=zh_CN.UTF-8
export LC_ALL=zh_CN.UTF-8Q: 没有提交记录?
bash
# 检查是否在 Git 仓库中
git status
# 检查是否有提交
git log --oneline -1📚 相关命令
gw log 提供了一个美观且实用的 Git 提交历史查看体验。通过 boxen 边框装饰和智能的时间格式化,让查看代码历史变得更加直观和愉快。