gitk(1)
=======

NAME
----
gitk - The Git repository browser

SYNOPSIS
--------
[verse]
'gitk' [<option>...] [<revs>] [--] [<path>...]

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.

Historically, gitk was the first repository browser. It's written in tcl/tk
and started off in a separate repository but was later merged into the main
Git repository.

OPTIONS
-------
To control which revisions to show, the command takes options applicable to
the 'git rev-list' command (see linkgit:git-rev-list[1]).
This manual page describes only the most
frequently used options.

-n <number>::
--max-count=<number>::

	Limits the number of commits to show.

--since=<date>::

	Show commits more recent than a specific date.

--until=<date>::

	Show commits older than a specific date.

--all::

	Show all branches.

--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.

--argscmd=<command>::
	Command to be run each time gitk has to determine the list of
	<revs> to show.  The command is expected to print on its standard
	output a list of additional revs to be shown, one per line.
	Use this instead of explicitly specifying <revs> if the set of
	commits to show may vary between refreshes.

--select-commit=<ref>::

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

<revs>::

	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 "'<from>'..'<to>'" to show all revisions between '<from>' and
	back to '<to>'. Note, more advanced revision selection can be applied.
	For a more complete list of ways to spell object names, see
	linkgit:gitrevisions[7].

<path>...::

	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.

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
-----
Gitk creates the .gitk file in your $HOME directory to store preferences
such as display options, font, and colors.

SEE ALSO
--------
'qgit(1)'::
	A repository browser written in C++ using Qt.

'gitview(1)'::
	A repository browser written in Python using Gtk. It's based on
	'bzrk(1)' and distributed in the contrib area of the Git repository.

'tig(1)'::
	A minimal repository browser and Git tool output highlighter written
	in C using Ncurses.

GIT
---
Part of the linkgit:git[1] suite
