Git
英语 ▾ 主题 ▾ 最新版本 ▾ gitk 最后更新于 2.44.0

名称

gitk - Git 代码库浏览器

概要

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

描述

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

选项

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

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

rev-list 选项和参数

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

--all

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

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

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

--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 抑制,但其他差异格式(即 --raw--numstat--shortstat--dirstat--summary--name-only--name-status--check)目前未实现。

<start><end> 可以采用以下其中一种形式

  • 数字

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

  • /正则表达式/

    此表单将使用与给定 POSIX 正则表达式匹配的第一行。如果 <start> 是一个正则表达式,它将从任何先前 -L 范围的末尾开始搜索,否则从文件开头开始搜索。如果 <start>^/正则表达式/,它将从文件开头开始搜索。如果 <end> 是一个正则表达式,它将从 <start> 给出的行开始搜索。

  • +偏移量或-偏移量

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

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

<修订版本范围>

限制要显示的修订版本。这可以是单个修订版本,表示从给定修订版本开始并向后显示,也可以是“<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 是第一个图形化仓库浏览器。它使用 tcl/tk 编写。

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

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

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

另请参阅

qgit(1)

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

tig(1)

一个使用 Ncurses 编写的、最小化的仓库浏览器和 Git 工具输出高亮器,使用 C 语言编写。

Git

git[1] 套件的一部分

scroll-to-top