git-gui(1)
==========

NAME
----
git-gui - A portable graphical interface to Git

SYNOPSIS
--------
[verse]
'git gui' [<command>] [arguments]

DESCRIPTION
-----------
A Tcl/Tk based graphical user interface to Git.  'git gui' focuses
on allowing users to make changes to their repository by making
new commits, amending existing ones, creating branches, performing
local merges, and fetching/pushing to remote repositories.

Unlike 'gitk', 'git gui' focuses on commit generation
and single file annotation and does not show project history.
It does however supply menu actions to start a 'gitk' session from
within 'git gui'.

'git gui' is known to work on all popular UNIX systems, Mac OS X,
and Windows (under both Cygwin and MSYS).  To the extent possible
OS specific user interface guidelines are followed, making 'git gui'
a fairly native interface for users.

COMMANDS
--------
blame::
	Start a blame viewer on the specified file on the given
	version (or working directory if not specified).

browser::
	Start a tree browser showing all files in the specified
	commit.  Files selected through the
	browser are opened in the blame viewer.

citool::
	Start 'git gui' and arrange to make exactly one commit before
	exiting and returning to the shell.  The interface is limited
	to only commit actions, slightly reducing the application's
	startup time and simplifying the menubar.

version::
	Display the currently running version of 'git gui'.


Examples
--------
`git gui blame Makefile`::

	Show the contents of the file 'Makefile' in the current
	working directory, and provide annotations for both the
	original author of each line, and who moved the line to its
	current location.  The uncommitted file is annotated, and
	uncommitted changes (if any) are explicitly attributed to
	'Not Yet Committed'.

`git gui blame v0.99.8 Makefile`::

	Show the contents of 'Makefile' in revision 'v0.99.8'
	and provide annotations for each line.  Unlike the above
	example the file is read from the object database and not
	the working directory.

`git gui blame --line=100 Makefile`::

	Loads annotations as described above and automatically
	scrolls the view to center on line '100'.

`git gui citool`::

	Make one commit and return to the shell when it is complete.
	This command returns a non-zero exit code if the window was
	closed in any way other than by making a commit.

`git gui citool --amend`::

	Automatically enter the 'Amend Last Commit' mode of
	the interface.

`git gui citool --nocommit`::

	Behave as normal citool, but instead of making a commit
	simply terminate with a zero exit code. It still checks
	that the index does not contain any unmerged entries, so
	you can use it as a GUI version of linkgit:git-mergetool[1]

`git citool`::

	Same as `git gui citool` (above).

`git gui browser maint`::

	Show a browser for the tree of the 'maint' branch.  Files
	selected in the browser can be viewed with the internal
	blame viewer.

SEE ALSO
--------
linkgit:gitk[1]::
	The Git repository browser.  Shows branches, commit history
	and file differences.  gitk is the utility started by
	'git gui''s Repository Visualize actions.

Other
-----
'git gui' is actually maintained as an independent project, but stable
versions are distributed as part of the Git suite for the convenience
of end users.

A 'git gui' development repository can be obtained from:

  git clone git://repo.or.cz/git-gui.git

or

  git clone http://repo.or.cz/r/git-gui.git

or browsed online at http://repo.or.cz/w/git-gui.git/[].

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