中文 ▾ 主题 ▾ 最新版本 ▾ 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..commit2* 或 *commit2 ^commit1*),仅显示直接存在于 *commit1* 和 *commit2* 之间的祖先链上的提交,即既是 *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>* 可以采用以下形式之一

  • number

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

  • /regex/

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

  • +offset or -offset

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

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

<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* 的 *branch* 混淆

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