tig 是一个基于文本的 Git 仓库浏览器,提供了交互式的终端界面来浏览 Git 历史、查看提交、查看差异等。它是 “Git” 的反向拼写,是 Git 命令行工具的优秀补充。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 ➜ tig --help tig version 2.5.8 Usage: tig [options] [revs] [--] [paths] Options: -C <path> Run as if tig was started in <path> -v, --version Show version and exit -h, --help Show help message and exit -d, --date =<format> Date format string -i, --follow Follow file renames -S, --source =<repo> Open repository from <repo> -w, --width=<width> Set terminal width -h, --height=<height> Set terminal height -u, --untracked-files Show untracked files -s, --status Show status view -l, --log Show log view -b, --blame Show blame view -r, --refs Show refs view -t, --tree Show tree view -c, --changelog Show changelog view -p, --pager Use pager for output --all Show all refs --pretty=<format> Pretty format string
基本概念 什么是 Tig Tig 是一个基于 ncurses 的 Git 仓库浏览器,提供了图形化的终端界面来浏览 Git 仓库。它不需要图形界面,完全在终端中运行,非常适合在服务器上使用。
主要功能
浏览提交历史 :以交互式方式浏览 Git 提交历史
查看提交详情 :查看提交的详细信息、差异、文件变更
查看文件历史 :查看特定文件的历史记录
查看分支和标签 :浏览所有分支和标签
查看工作区状态 :查看工作目录和暂存区的状态
交互式操作 :支持搜索、过滤、跳转等操作
安装 macOS 1 2 3 4 5 brew install tig sudo port install tig
Linux 1 2 3 4 5 6 7 8 9 10 sudo apt-get install tigsudo yum install tigsudo dnf install tigsudo pacman -S tig
从源码编译 1 2 3 4 git clone https://github.com/jonas/tig.git cd tigmake sudo make install
基本语法 1 tig [选项] [revs] [--] [路径...]
其中:
选项:控制 tig 行为的参数
revs:可选的 Git 修订版本(提交、分支、标签等)
路径:可选,指定要查看的文件或目录
常用选项
选项
说明
-s, --status
启动时显示状态视图
-l, --log
启动时显示日志视图(默认)
-b, --blame
启动时显示 blame 视图
-r, --refs
启动时显示引用视图
-t, --tree
启动时显示树视图
-c, --changelog
启动时显示变更日志视图
-C <path>
在指定路径运行 tig
-S, --source=<repo>
打开指定仓库
-u, --untracked-files
显示未跟踪的文件
-i, --follow
跟踪文件重命名
-w, --width=<width>
设置终端宽度
-h, --height=<height>
设置终端高度
--all
显示所有引用
-p, --pager
使用分页器输出
基本使用 启动 Tig 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ➜ tig ➜ tig --status ➜ tig -s ➜ tig main ➜ tig -- src/main.c ➜ tig HEAD~10..HEAD
查看特定视图 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ➜ tig --log ➜ tig --status ➜ tig --refs ➜ tig --tree ➜ tig --blame src/main.c
界面说明 主视图 Tig 有多个视图,每个视图显示不同的信息:
日志视图(Log View) :显示提交历史
状态视图(Status View) :显示工作目录状态
引用视图(Refs View) :显示分支和标签
树视图(Tree View) :显示文件树
Blame 视图(Blame View) :显示文件的逐行注释
主视图(Main View) :显示提交详情
基本操作 导航
按键
说明
↑ / k
向上移动
↓ / j
向下移动
Page Up / Ctrl+B
向上翻页
Page Down / Ctrl+F
向下翻页
Home / g
跳到顶部
End / G
跳到底部
Enter
进入/展开
Esc / q
退出/返回
视图切换
按键
说明
m
切换到主视图
l
切换到日志视图
s
切换到状态视图
r
切换到引用视图
t
切换到树视图
b
切换到 blame 视图
搜索
按键
说明
/
向前搜索
?
向后搜索
n
下一个匹配
N
上一个匹配
日志视图(Log View) 日志视图显示提交历史,是 tig 的默认视图。
基本操作
日志视图操作
按键
说明
Enter
查看提交详情
C
查看提交的完整信息
D
查看提交的差异
T
查看提交的文件树
Y
复制提交哈希
R
刷新视图
f
标记提交
F
取消标记
/
搜索提交信息
查看特定范围的提交 1 2 3 4 5 6 7 8 9 10 11 ➜ tig HEAD~20..HEAD ➜ tig feature-branch ➜ tig main..feature-branch ➜ tig --author="John Doe"
状态视图(Status View) 状态视图显示工作目录和暂存区的状态。
基本操作 1 2 3 4 ➜ tig --status ➜ tig -s
状态视图操作
按键
说明
Enter
查看文件差异
u
取消暂存文件
s
暂存文件
S
暂存所有文件
!
恢复文件
c
提交更改
C
提交所有更改
a
添加未跟踪的文件
A
添加所有未跟踪的文件
d
查看文件差异
D
查看所有差异
引用视图(Refs View) 引用视图显示所有分支和标签。
基本操作
引用视图操作
按键
说明
Enter
查看引用的日志
c
检出分支
C
创建新分支
d
删除分支
m
合并分支
r
重命名分支
Blame 视图(Blame View) Blame 视图显示文件的逐行注释,显示每行代码是谁在什么时候修改的。
基本操作 1 2 3 4 ➜ tig --blame src/main.c ➜ tig -b src/main.c
Blame 视图操作
按键
说明
Enter
查看提交详情
D
查看行的差异
l
查看行的日志
b
在新分支中查看
r
刷新视图
主视图(Main View) 主视图显示提交的详细信息。
主视图操作
按键
说明
D
查看差异
T
查看文件树
l
查看日志
b
查看 blame
s
查看状态
r
刷新视图
Y
复制提交哈希
实际应用场景 场景1:浏览提交历史
场景2:查看工作区状态
场景3:查看文件历史 1 2 3 4 5 6 7 ➜ tig -- src/main.c
场景4:查看文件注释(Blame) 1 2 3 4 5 6 7 ➜ tig --blame src/main.c
场景5:比较分支 1 2 3 4 5 6 ➜ tig main..feature-branch
场景6:搜索提交
高级用法 自定义启动视图 1 2 3 4 5 6 7 8 ➜ tig --status ➜ tig --refs ➜ tig --tree
查看特定提交范围 1 2 3 4 5 6 7 8 ➜ tig HEAD~10..HEAD ➜ tig --since="2024-01-01" --until ="2024-12-31" ➜ tig --author="John Doe"
查看特定路径 1 2 3 4 5 6 7 8 ➜ tig -- src/ ➜ tig -- src/main.c src/utils.c ➜ tig -- src/ tests/
使用配置文件 Tig 支持配置文件 ~/.tigrc 来自定义行为:
1 2 3 4 5 6 7 8 9 10 set main-view = log set status-view = statusset color = true bind main D !git diff %(commit)bind status s !git add %(file)
与其他工具集成 1 2 3 4 5 git config --global alias.lg "!tig" git config --global pager.log "tig --no-pager"
常用快捷键参考 全局快捷键
按键
说明
q / Esc
退出/返回
?
显示帮助
R
刷新视图
Ctrl+L
刷新屏幕
日志视图快捷键
按键
说明
Enter
查看提交详情
C
查看完整提交信息
D
查看提交差异
T
查看文件树
Y
复制提交哈希
f
标记提交
F
取消标记
/
搜索
状态视图快捷键
按键
说明
s
暂存文件
S
暂存所有文件
u
取消暂存
!
恢复文件
c
提交
C
提交所有
a
添加未跟踪文件
A
添加所有未跟踪文件
d
查看差异
引用视图快捷键
按键
说明
Enter
查看引用日志
c
检出分支
C
创建分支
d
删除分支
m
合并分支
r
重命名分支
配置文件 配置文件位置 Tig 的配置文件位于 ~/.tigrc。
常用配置示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 set main-view = log set status-view = statusset color = true set date-format = "%Y-%m-%d %H:%M" bind main D !git diff %(commit)bind status s !git add %(file)bind status u !git restore --staged %(file)set line-graphics = true set tab-size = 4set search-case-sensitive = false set search-regex = true
配置选项说明
选项
说明
main-view
默认主视图(log, status, refs, tree)
status-view
状态视图设置
color
启用/禁用颜色
date-format
日期格式
line-graphics
使用线条图形
tab-size
Tab 键大小
search-case-sensitive
搜索是否区分大小写
search-regex
搜索是否使用正则表达式
常见问题与技巧 问题1:如何退出 tig? 按 q 或 Esc 键退出当前视图,多次按 q 可以完全退出 tig。
问题2:如何刷新视图? 按 R 键刷新当前视图,或按 Ctrl+L 刷新屏幕。
问题3:如何搜索提交? 在日志视图中按 / 键,输入搜索关键词,按 Enter 搜索,按 n 查找下一个匹配。
问题4:如何查看文件的完整历史? 1 2 ➜ tig --follow -- src/main.c
问题5:如何查看未跟踪的文件?
问题6:如何在 tig 中执行 Git 命令? 在 tig 中按 ! 键可以执行 shell 命令,输入 Git 命令即可。
技巧1:快速查看提交差异 在日志视图中,将光标移到提交上,按 D 键即可查看该提交的差异。
技巧2:标记多个提交 在日志视图中,按 f 键标记提交,可以标记多个提交进行比较。
技巧3:复制提交哈希 在日志视图或主视图中,按 Y 键可以复制当前提交的哈希值。
技巧4:查看特定作者的提交
技巧5:自定义键绑定 在 ~/.tigrc 中自定义键绑定:
1 2 3 4 5 bind main D !git diff %(commit)bind main s !git show %(commit)
与其他工具的比较 Tig vs Git Log
特性
Tig
Git Log
交互式
是
否
图形界面
是
否
搜索
内置
需要管道
文件操作
支持
不支持
学习曲线
中等
低
Tig vs Gitk
特性
Tig
Gitk
界面
文本界面
图形界面
依赖
只需终端
需要 X11
速度
快
较慢
远程使用
支持
需要 X11 转发
最佳实践
熟悉基本操作 :先熟悉基本的导航和视图切换操作
使用配置文件 :根据个人习惯配置 ~/.tigrc
结合 Git 命令 :Tig 是 Git 的补充,不是替代,结合使用效果更好
使用搜索功能 :充分利用搜索功能快速定位提交
标记提交 :使用标记功能比较多个提交
查看差异 :经常使用 D 键查看提交差异,了解代码变更
注意事项
终端兼容性 :Tig 需要支持 ncurses 的终端
性能 :在大型仓库中,首次加载可能需要一些时间
配置 :配置文件语法需要正确,否则可能无法启动
依赖 :需要安装 ncurses 库
学习曲线 :需要一些时间熟悉快捷键和操作
参考文献