简体中文 ▾ 主题 ▾ 最新版本 ▾ 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[=<模式>]
--tags[=<模式>]
--remotes[=<模式>]

假装命令行中将所有的分支(或标签、远程分支)都作为 <提交> 列出。如果给出了 <模式>,则将引用限制为匹配给定 shell 通配符的引用。如果模式中缺少 ?*[,则隐含结尾带有 /*

--since=<日期>

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

--until=<日期>

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

--date-order

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

--merge

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

--left-right

标记提交可从对称差的哪一侧到达。来自左侧的提交以前缀 < 符号表示,来自右侧的以前缀 > 符号表示。

--full-history

使用 <路径>…​ 过滤历史记录时,不剪枝某些历史记录。(更详细的解释请参见 git-log[1] 中的“历史简化”部分。)

--simplify-merges

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

--ancestry-path

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

-L<起始>,<结束>:<文件>
-L:<函数名>:<文件>

追踪 <文件> 中由 <起始>,<结束> 或函数名正则表达式 <函数名> 给出的行范围演变过程。您不能给出任何路径规范(pathspec)限制器。此选项目前仅限于从单个修订版本开始的遍历,即您只能给出零个或一个正向修订版本参数,且 <起始><结束>(或 <函数名>)必须存在于起始修订版本中。您可以多次指定此选项。隐含 --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] 中的“定义自定义块头”)。

<修订版本范围>

限制要显示的修订版本。这可以是一个单一修订版本,表示显示从给定修订版本向后的历史;也可以是“<起始>..<结束>”形式的范围,显示从 <起始><结束> 之间的所有修订版本。注意,可以应用更高级的修订版本选择。有关拼写对象名称的更完整方式列表,请参见 gitrevisions[7]

<路径>…​

将提交限制为涉及给定路径中文件的提交。注意,为避免与修订版本名称混淆,请使用“--”将路径与前面的任何选项隔开。

gitk 特有选项

--argscmd=<命令>

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

--select-commit=<引用>

加载图表后选择指定的提交。默认行为相当于指定 --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)

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

tig(1)

一个使用 C 和 Ncurses 编写的极简仓库浏览器和 Git 工具输出高亮器。

GIT

Git[1] 套件的一部分