0%

tig入门

tig是什么?

简单来说,tig 是 Git 的文本模式界面(text-mode interface for Git)。

官方文档对它的说明如下:

Tig is an ncurses-based text-mode interface for git. It functions mainly as a Git repository browser, but can also assist in staging changes for commit at chunk level and act as a pager for output from various Git commands.

Tig 是 git 的基于 ncurses1 的文本界面。它主要用作 Git 仓库浏览器,但也有助于在块级别暂存提交更改,并作为各种 Git 命令的输出分页器。

为什么需要tig?

Git 是一个优秀的版本控制系统,它的操作命令都很方便强大。但是,长期使用 Git 的小伙伴肯定会发现,使用 Git 命令在终端中浏览批量数据——比如浏览日志——就是一个灾难,内容通常相当混乱。

一种解决方案是使用相关的辅助 GUI 软件,但对于程序员而言命令行始终是最高效的环境,这至少不是一个追求高效的解决方案。

而 tig 为终端提供了一个基于文本的用户界面,可以方便地浏览 Git 日志,并且可以在提交日志间进行跳转,而它可以做的却不限于此。

如何安装?

如果你使用的是 Windows 系统,那么在安装 Git 时应该已经内置安装了 tig。通常在 <Git>/usr/bin 目录下可以找到。

其他系统安装命令如下:

  • MacOS: brew install tig
  • Ubuntu/Debian: sudo apt install tig
  • Fedora/RHEL: sudo dnf install tig

从主视图说起

tig 布局通常是这样,包含一个状态窗口(最后那行)和一个或多个视图。默认通常只显示一个视图,当然也可以分屏显示多个视图(下面对主视图的介绍中就可以看到分屏显示的情况)。

目前,tig 有 13 种视图,我们从主视图入手,因为它是 tig 的默认视图。

在终端执行 tig 命令即可进入 tig 的主视图,主视图中显示的是当前工作目录所在的 Git 仓库的提交日志。默认高亮选中第一行,即最后的日志。

注意,这是一个可滚动浏览的提交日志列表,你可以通过快捷键在列表中进行导航。其操作方式类似于 vi,如果你熟悉 vi,那么应该可以快速上手。

j/k 键:可以让光标上下移动选中相应的提交日志行。

Enter 键:选中某条提交日志行的状态下按 Enter 键,终端窗口会被分屏,左屏仍显示提交日志列表,右屏显示被选中的提交日志的详细信息。此时,焦点会自动切换到右屏中,即j/k 键将在右屏进行导航。

J/K:如果此时需要在左屏各条提交日志间进行导航,可使用 J/K,右屏内容会随着选中的提交日志而即时改变。

也可以使用上下方向键进行左屏导航。

Tab 键:当然,也可以按 Tab 键将焦点切换回左屏,使用 j/k 键进行导航。

Q/Ctrl + c:退出 tig。

很显然,快捷键很多,而这只是一小部分。因此,通常你不可能记住所有快捷键,好在在 tig 的任一视图你都可以按下 h 键来查看帮助视图,其中完整列出了所有快捷键。

一种操作对应的快捷键通常也不止一个,因此,你不需要记住所有快捷键,只需要选择性记住适合自己习惯的那个。

引用视图

r 键进入引用视图,该视图会显示分支、远程节点和标签。

j/k 键:与主视图类似,上下移动光标导航。

Enter 键:类似地,分屏显示选中引用的提交日志。

C :当焦点在引用视图上时,会询问是否执行 git checkout 命令,即切换分支;焦点在日志视图上时,会询问是否执行 git cherry-pick 命令。

状态视图

s/S 键进入状态视图,该视图会分组显示暂存(暂存待提交)、未暂存(修改未暂存)和不跟踪的文件。

j/k 键:仍是上下导航。

Enter 键:如果选中的是暂存或未暂存文件,将分屏显示差异视图;如果选中的是未跟踪的文件,将分屏显示文件内容。

u 键:如果选中的是暂存文件,则会取消暂存,这可能让其回到未暂存或不跟踪的文件列表;如果选中的是未暂存或不跟踪的文件,则会将其暂存。

! 键:选中的是未暂存文件,丢弃文件修改。其他状态文件不能执行该操作。

C:提交。

其他视图

日志视图(l):显示完整日志信息和差异统计。

差异视图(d):显示当前工作副本与上次提交之间的差异,如果当前工作副本是干净的,则显示上次提交的更改。

树视图(t):以目录方式展示仓库结构,并在其中导航查看文件内容。

暂存视图(c):显示(未)暂存文件的更改以及不跟踪的文件的内容。

贮藏视图(y):显示贮藏列表。

正则视图(g):正则查找,匹配文件名及文本内容。

分页器视图(p

帮助视图(h):键绑定快速查看帮助。

参考

官方主页 - GitHub Pages

官方手册 - GitHub Pages

Tig GitHub Repository

1. 译注:ncurses,字符终端处理库。