gitk
是一个强悍的git图形化工具。它可不仅仅是命令行的一个替代产品,实际上它能实现很多命令行并不能提供的git功能。所以不要认为它和命令行是git操作的两种实现工具。
然而gitk
相关的文档很少,所以这里从头开始介绍一下gitk
。
- 颜色和字体
- 本地分支名称是绿色背景
- 远程分支名称是橘色和绿色混合的背景色
- 当前分支是加粗字体
- 分支tag是黄色背景
- 当前HEAD是黄色的圆点
- 黄色的方块代表提交有notes(
git备注是用于给提交补充消息的,但是不会改变提交信息
,参考git-notes)
- 代码库操作
这些操作都作用在提交列表上,也就是最上面的面板
- 右键单击提交信息
- 创建tag
- 创建分支
- 重置当前分支到这个提交(
soft/mixed/hard
) - 挑选(
cherry-pick
)当前提交给当前分支(这个命令也不常用,我百度了一下关于git的cherry-pick命令)
- 右键单击分支名称
- 检出分支
- 删除分支
- 主菜单
-
reload
: 如果你在其他界面使用命令行操作了一些东西,想通过gitk
刷新出来看,可以点一下F5
F5会更新分支信息把新的值显示出来,并且会同时显示原来的值。这在rebase之类的操作后相当有用,因为你可以比较一下原来和现在的分支
如果使用
ctrl+F5
,也就是完全刷新,就不会显示变更之前的值了 -
list/choose references
: 要快速到指定分支,点击F2
。显示出来的结果可能很多,可以通过下面的过滤框写一下模式。它不会模糊匹配,你要么写完分支名称,要么使用通配符*。 点选一个分支整个gitk就去到新分支了,不过弹出来的窗口还在,可以继续点其他分支。
-
浏览提交列表
最上面的面板就是提交列表
许多操作都有快捷键绑定。 比如
下键
可以使用n
代替。不过知道了也没啥用。
上下键
,还有pageup/pagedown
键,作用显而易见;左右键
,上一个/下一个提交;shift+上下键
,查下上一个/下一个匹配 (在第6部分讲
)
-
浏览diff信息
下面的面板左边部分是diff信息,右面部分是diff的文件列表。
-
空格键
:向前一页 -
退格键/删除键
: 同上,不过反向 -
f
:下一个文件,左右两边都会移动 -
b
:同上,不过是前一个文件 -
点击右侧文件
:左侧会滚动到对应的diff计算提交的差别
- 左键选中一个提交
- 找到另一个提交(可以使用滚动条,但不能使用键盘)
- 右键单击选择
Diff this -> selected
现在可以和上面一样对比差别了。
#查找提交
-
搜索提交信息
:任何时候点击"/"
都可以开始搜索提交信息。匹配的提交会被加粗,中文尤其明显。前面说过,可以使用Shift+上下键
进行导航。 -
根据文件搜索
:匹配到提交以后,在右下面板右击文件选择Highlight this only
。如果想匹配多个文件,可以右击其他文件,选择
Highlight this too
,这些文件不用是同一个提交里的。注意这时候搜索模式就从
containing
变成了touching paths
-
根据代码搜索
:把搜索模式改成adding/removing string
即可。
#导航提交
- diff面板显示提交的Parent和Child。点击对应的hash码可转过去
- diff面板显示了当前提交所属的分支信息。点击跳转到对应分支的head。
- 如果提交图太复杂,连接两个提交的线就会断开。点击线部分(不是圆点或者箭头部分),diff面板会显示这一部分对应的详情。
- 如果点击了箭头,你会看到箭头翻转了,当前提交没有变。实际上箭头连接的是两部分提交。