简体中文 ▾ 主题 ▾ 最新版本 ▾ gitk 上次更新于 2.51.1

名称

gitk - Git 仓库浏览器

概要

gitk [<options>] [<revision-range>] [--] [<path>…​]

描述

显示仓库或选定提交集中的更改。这包括可视化提交图,显示与每个提交相关的信息,以及每个修订版中树形结构中的文件。

选项

为了控制显示哪些修订版,gitk 支持大多数适用于 git rev-list 命令的选项。它还支持一些适用于 git diff-* 命令的选项,以控制如何显示每个提交引入的更改。最后,它支持一些 gitk 特有的选项。

由于命令行解析器的限制,gitk 通常只理解 stuck 形式(参见 gitcli[7])的带参数选项。

rev-list 选项和参数

本手册页仅描述最常用的选项。有关完整列表,请参阅 git-rev-list[1]

--all

显示所有引用(分支、标签等)。

--branches[=<pattern>]
--tags[=<pattern>]
--remotes[=<pattern>]

假装所有分支(标签、远程分支等)都已列在命令行上作为 <commit>。如果给出了 <pattern>,则将引用限制为与给定 shell glob 匹配的引用。如果模式缺少 ?*[,则会在末尾隐含 /*

--since=<date>

显示特定日期之后的所有提交。

--until=<date>

显示特定日期之前的所有提交。

--date-order

尽可能按日期对提交进行排序。

--merge

在尝试合并因冲突而停止后,显示两个分支(即 HEAD 和 MERGE_HEAD)之间的历史记录中的提交,这些提交修改了冲突的文件并且不存在于所有正在合并的分支中。

--left-right

标记提交可从对称差分的哪一侧到达。来自左侧的提交前面会加上一个 < 符号,来自右侧的提交则加上一个 > 符号。

--full-history

在使用 <path>…​ 过滤历史时,不修剪某些历史。(有关更详细的解释,请参见 git-log[1] 中的“历史简化”)。

--simplify-merges

--full-history 的附加选项,用于从结果历史中删除一些不必要的合并,因为没有选定的提交会促成此合并。(有关更详细的解释,请参见 git-log[1] 中的“历史简化”)。

--ancestry-path

在给出要显示的一系列提交时(例如 commit1..commit2commit2 ^commit1),仅显示存在于 commit1commit2 之间的祖先链上的提交,即既是 commit1 的后代,又是 commit2 的祖先的提交。(有关更详细的解释,请参见 git-log[1] 中的“历史简化”)。

-L<start>,<end>:<file>
-L:<funcname>:<file>

跟踪 <file> 中给定的行范围 <start> ,<end> 或函数名正则表达式 <funcname> 的演变。您不能提供任何路径名限制器。目前这仅限于从单个修订版开始的遍历,即您只能提供零个或一个正面修订版参数,并且 <start><end>(或 <funcname>)必须存在于起始修订版中。您可以多次指定此选项。隐含 --patch。可以使用 --no-patch 抑制补丁输出,但其他 diff 格式(即 --raw--numstat--shortstat--dirstat--summary--name-only--name-status--check)目前未实现。

<start><end> 可以采用以下形式之一

  • <number>

    如果 <start><end> 是一个数字,它指定一个绝对行号(行从 1 开始计数)。

  • /<regex>/

    此形式将使用第一个匹配给定 POSIX <regex> 的行。如果 <start> 是一个正则表达式,它将从上一个 -L 范围的末尾(如果存在)开始搜索,否则从文件开头开始搜索。如果 <start>^/<regex>/,它将从文件开头开始搜索。如果 <end> 是一个正则表达式,它将从 <start> 给定的行开始搜索。

  • +<offset>-<offset>

    这仅对 <end> 有效,并将指定 <start> 给定行之前或之后的行数。

如果用 <start><end> 的位置给出了 :<funcname>,它是一个正则表达式,表示从第一个匹配 <funcname> 的 funcname 行到下一个 funcname 行的范围。:<funcname> 从上一个 -L 范围的末尾(如果存在)开始搜索,否则从文件开头开始搜索。^:<funcname> 从文件开头开始搜索。函数名的确定方式与 git diff 如何处理补丁块头相同(参见 gitattributes[5] 中的“定义自定义块头”)。

<revision range>

限制要显示的修订版。这可以是单个修订版,表示从给定修订版开始向后显示,或者可以是一个形式为“<from>..<to>”的范围,表示显示 <from><to> 之间的所有修订版。请注意,可以应用更高级的修订版选择。有关指定对象名称的更完整列表,请参阅 gitrevisions[7]

<path>…​

将提交限制为修改给定路径中文件的提交。请注意,为了避免与修订版名称的歧义,请使用 "--" 来将路径与任何前面的选项分隔开。

gitk 特有选项

--argscmd=<command>

每次 gitk 需要确定要显示的修订版范围时要运行的命令。该命令应在其标准输出上打印要显示的附加修订版的列表,每行一个。如果要显示的提交集在刷新之间可能会发生变化,请使用此选项而不是显式指定 <revision-range>

--select-commit=<ref>

加载图后选择指定的提交。默认行为等同于指定 --select-commit=HEAD

示例

gitk v2.6.12.. include/scsi drivers/scsi

显示自版本 v2.6.12 以来修改了 include/scsi 或 drivers/scsi 子目录中任何文件的更改。

gitk --since="2 weeks ago" -- gitk

显示过去两周内对文件 gitk 的更改。“--”是必需的,以避免与名为 gitk 的**分支**混淆。

gitk --max-count=100 --all -- Makefile

显示对文件 Makefile 的最多 100 项更改。而不是只查看当前分支中的更改,而是查看所有分支。

文件

用户配置和偏好设置存储在

  • $XDG_CONFIG_HOME/git/gitk(如果存在),否则

  • $HOME/.gitk(如果存在)

如果以上两者都不存在,则会创建 $XDG_CONFIG_HOME/git/gitk 并默认使用。如果未设置 $XDG_CONFIG_HOME,则在所有情况下它都默认为 $HOME/.config

历史

Gitk 是第一个图形化仓库浏览器,由 Paul Mackerras 用 Tcl/Tk 编写。

gitk 实际上作为独立项目维护,但为了方便最终用户,其稳定版本作为 Git 套件的一部分分发。

gitk-git/ 来自 Johannes Sixt 的 gitk 项目

https://github.com/j6t/gitk

另请参阅

qgit(1)

使用 Qt 编写的 C++ 仓库浏览器。

tig(1)

使用 Ncurses 编写的 C 语言实现的最小仓库浏览器和 Git 工具输出高亮器。

GIT

Git[1] 套件的一部分