简体中文 ▾ 主题 ▾ 最新版本 ▾ gitk 最后更新于 2.44.0

名称

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>

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

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

  • 数字

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

  • /正则表达式/

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

  • +偏移量 或 -偏移量

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

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

<修订范围>

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

<路径>…​

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

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 是第一个图形化仓库浏览器。它使用 tcl/tk 编写。

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

gitk-git/ 来自 Paul Mackerras 的 gitk 项目

git://ozlabs.org/~paulus/gitk

另请参阅

qgit(1)

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

tig(1)

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

GIT

Git[1] 套件的一部分

scroll-to-top