GITK(1) Git Manual GITK(1)

# [NAME](#NAME)

gitk - The Git repository browser

# [SYNOPSIS](#SYNOPSIS)

```
gitk [<options>] [<revision-range>] [--] [<path>...]
```

# [DESCRIPTION](#DESCRIPTION)

Displays changes in a repository or a selected set of commits. This includes visualizing the commit graph, showing information related to each commit, and the files in the trees of each revision.

# [OPTIONS](#OPTIONS)

To control which revisions to show, gitk supports most options applicable to the *git rev-list* command. It also supports a few options applicable to the *git diff-\** commands to control how the changes each commit introduces are shown. Finally, it supports some gitk-specific options.

gitk generally only understands options with arguments in the *stuck* form (see [**gitcli**(7)](/man/os/git/gitcli.7)) due to limitations in the command-line parser.

## [rev-list options and arguments](#rev)

This manual page describes only the most frequently used options. See [**git-rev-list**(1)](/man/os/git/git-rev-list.1) for a complete list.

--all

Show all refs (branches, tags, etc.).

--branches\[=&lt;pattern&gt;], --tags\[=&lt;pattern&gt;], --remotes\[=&lt;pattern&gt;]

Pretend as if all the branches (tags, remote branches, resp.) are listed on the command line as *&lt;commit&gt;*. If *&lt;pattern&gt;* is given, limit refs to ones matching given shell glob. If pattern lacks *?*, *\**, or *[*, */\** at the end is implied.

--since=&lt;date&gt;

Show commits more recent than a specific date.

--until=&lt;date&gt;

Show commits older than a specific date.

--date-order

Sort commits by date when possible.

--merge

After an attempt to merge stops with conflicts, show the commits on the history between two branches (i.e. the HEAD and the MERGE\_HEAD) that modify the conflicted files and do not exist on all the heads being merged.

--left-right

Mark which side of a symmetric difference a commit is reachable from. Commits from the left side are prefixed with a &lt; symbol and those from the right with a &gt; symbol.

--full-history

When filtering history with *&lt;path&gt;...*, does not prune some history. (See "History simplification" in [**git-log**(1)](/man/os/git/git-log.1) for a more detailed explanation.)

--simplify-merges

Additional option to **--full-history** to remove some needless merges from the resulting history, as there are no selected commits contributing to this merge. (See "History simplification" in [**git-log**(1)](/man/os/git/git-log.1) for a more detailed explanation.)

--ancestry-path

When given a range of commits to display (e.g. *commit1..commit2* or *commit2 ^commit1*), only display commits that exist directly on the ancestry chain between the *commit1* and *commit2*, i.e. commits that are both descendants of *commit1*, and ancestors of *commit2*. (See "History simplification" in [**git-log**(1)](/man/os/git/git-log.1) for a more detailed explanation.)

**-L&lt;start&gt;,&lt;end&gt;:&lt;file&gt;**, **-L:&lt;funcname&gt;:&lt;file&gt;**

Trace the evolution of the line range given by *&lt;start&gt;,&lt;end&gt;*, or by the function name regex *&lt;funcname&gt;*, within the *&lt;file&gt;*. You may not give any pathspec limiters. This is currently limited to a walk starting from a single revision, i.e., you may only give zero or one positive revision arguments, and *&lt;start&gt;* and *&lt;end&gt;* (or *&lt;funcname&gt;*) must exist in the starting revision. You can specify this option more than once. Implies **--patch**. Patch output can be suppressed using **--no-patch**. Non-patch diff formats **--raw**, **--name-only**, **--name-status**, and **--summary** are supported. Diff stat formats (**--stat**, **--numstat**, **--shortstat**, **--dirstat**) are not currently implemented.

Patch formatting options such as **--word-diff**, **--color-moved**, **--no-prefix**, and whitespace options (**-w**, **-b**) are supported, as are pickaxe options (**-S**, **-G**) and **--diff-filter**.

*&lt;start&gt;* and *&lt;end&gt;* can take one of these forms:

• *&lt;number&gt;*

If *&lt;start&gt;* or *&lt;end&gt;* is a number, it specifies an absolute line number (lines count from 1).

• **/&lt;regex&gt;/**

This form will use the first line matching the given POSIX *&lt;regex&gt;*. If *&lt;start&gt;* is a regex, it will search from the end of the previous **-L** range, if any, otherwise from the start of file. If *&lt;start&gt;* is **^/&lt;regex&gt;/**, it will search from the start of file. If *&lt;end&gt;* is a regex, it will search starting at the line given by *&lt;start&gt;*.

• **+&lt;offset&gt;** or **-&lt;offset&gt;**

This is only valid for *&lt;end&gt;* and will specify a number of lines before or after the line given by *&lt;start&gt;*.

If **:&lt;funcname&gt;** is given in place of *&lt;start&gt;* and *&lt;end&gt;*, it is a regular expression that denotes the range from the first funcname line that matches *&lt;funcname&gt;*, up to the next funcname line. **:&lt;funcname&gt;** searches from the end of the previous **-L** range, if any, otherwise from the start of file. **^:&lt;funcname&gt;** searches from the start of file. The function names are determined in the same way as **git** **diff** works out patch hunk headers (see *Defining a custom hunk-header* in [**gitattributes**(5)](/man/os/git/gitattributes.5)).

&lt;revision range&gt;

Limit the revisions to show. This can be either a single revision meaning show from the given revision and back, or it can be a range in the form "*&lt;from&gt;*..*&lt;to&gt;*" to show all revisions between *&lt;from&gt;* and back to *&lt;to&gt;*. Note, more advanced revision selection can be applied. For a more complete list of ways to spell object names, see [**gitrevisions**(7)](/man/os/git/gitrevisions.7).

&lt;path&gt;...

Limit commits to the ones touching files in the given paths. Note, to avoid ambiguity with respect to revision names use "--" to separate the paths from any preceding options.

## [gitk-specific options](#gitk)

--argscmd=&lt;command&gt;

Command to be run each time gitk has to determine the revision range to show. The command is expected to print on its standard output a list of additional revisions to be shown, one per line. Use this instead of explicitly specifying a *&lt;revision-range&gt;* if the set of commits to show may vary between refreshes.

--select-commit=&lt;ref&gt;

Select the specified commit after loading the graph. Default behavior is equivalent to specifying *--select-commit=HEAD*.

# [EXAMPLES](#EXAMPLES)

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

Show the changes since version *v2.6.12* that changed any file in the include/scsi or drivers/scsi subdirectories

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

Show the changes during the last two weeks to the file *gitk*. The "--" is necessary to avoid confusion with the **branch** named *gitk*

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

Show at most 100 changes made to the file *Makefile*. Instead of only looking for changes in the current branch look in all branches.

# [FILES](#FILES)

User configuration and preferences are stored at:

• **$XDG\_CONFIG\_HOME/git/gitk** if it exists, otherwise

• **$HOME/.gitk** if it exists

If neither of the above exist then **$XDG\_CONFIG\_HOME/git/gitk** is created and used by default. If *$XDG\_CONFIG\_HOME* is not set it defaults to **$HOME/.config** in all cases.

# [HISTORY](#HISTORY)

Gitk was the first graphical repository browser, written by Paul Mackerras in Tcl/Tk.

*gitk* is actually maintained as an independent project, but stable versions are distributed as part of the Git suite for the convenience of end users.

**gitk-git/** comes from Johannes Sixt’s gitk project:

```
https://github.com/j6t/gitk
```

# [SEE ALSO](#SEE_ALSO)

[*qgit(1)*](/man/os/git/qgit.1)

A repository browser written in C++ using Qt.

[*tig(1)*](/man/os/git/tig.1)

A minimal repository browser and Git tool output highlighter written in C using Ncurses.

# [GIT](#GIT)

Part of the [**git**(1)](/man/os/git/git.1) suite

2026-06-29 Git 2.55.0

---

Document: gitk(1) from git 2.55.0-r9 (Chainguard OS)
Source: https://kernel.googlesource.com/pub/scm/git/git.git
