git-help(1)
===========

NAME
----
git-help - display help information about git

SYNOPSIS
--------
'git help' [-a|--all|-i|--info|-m|--man|-w|--web] [COMMAND]

DESCRIPTION
-----------

With no options and no COMMAND given, the synopsis of the 'git'
command and a list of the most commonly used git commands are printed
on the standard output.

If the option '--all' or '-a' is given, then all available commands are
printed on the standard output.

If a git command is named, a manual page for that command is brought
up. The 'man' program is used by default for this purpose, but this
can be overridden by other options or configuration variables.

Note that 'git --help ...' is identical as 'git help ...' because the
former is internally converted into the latter.

OPTIONS
-------
-a|--all::
	Prints all the available commands on the standard output. This
	option supersedes any other option.

-i|--info::
	Display manual page for the command in the 'info' format. The
	'info' program will be used for that purpose.

-m|--man::
	Display manual page for the command in the 'man' format. This
	option may be used to override a value set in the
	'help.format' configuration variable.
+
By default the 'man' program will be used to display the manual page,
but the 'man.viewer' configuration variable may be used to choose
other display programs (see below).

-w|--web::
	Display manual page for the command in the 'web' (HTML)
	format. A web browser will be used for that purpose.
+
The web browser can be specified using the configuration variable
'help.browser', or 'web.browser' if the former is not set. If none of
these config variables is set, the 'git-web--browse' helper script
(called by 'git-help') will pick a suitable default. See
linkgit:git-web--browse[1] for more information about this.

CONFIGURATION VARIABLES
-----------------------

help.format
~~~~~~~~~~~

If no command line option is passed, the 'help.format' configuration
variable will be checked. The following values are supported for this
variable; they make 'git-help' behave as their corresponding command
line option:

* "man" corresponds to '-m|--man',
* "info" corresponds to '-i|--info',
* "web" or "html" correspond to '-w|--web'.

help.browser, web.browser and browser.<tool>.path
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The 'help.browser', 'web.browser' and 'browser.<tool>.path' will also
be checked if the 'web' format is chosen (either by command line
option or configuration variable). See '-w|--web' in the OPTIONS
section above and linkgit:git-web--browse[1].

man.viewer
~~~~~~~~~~

The 'man.viewer' config variable will be checked if the 'man' format
is chosen. Only the following values are currently supported:

* "man": use the 'man' program as usual,
* "woman": use 'emacsclient' to launch the "woman" mode in emacs
(this only works starting with emacsclient versions 22),
* "konqueror": use a man KIO slave in konqueror.

Multiple values may be given to this configuration variable. Their
corresponding programs will be tried in the order listed in the
configuration file.

For example, this configuration:

	[man]
		viewer = konqueror
		viewer = woman

will try to use konqueror first. But this may fail (for example if
DISPLAY is not set) and in that case emacs' woman mode will be tried.

If everything fails the 'man' program will be tried anyway.

Note about git config --global
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Note that all these configuration variables should probably be set
using the '--global' flag, for example like this:

------------------------------------------------
$ git config --global help.format web
$ git config --global web.browser firefox
------------------------------------------------

as they are probably more user specific than repository specific.
See linkgit:git-config[1] for more information about this.

Author
------
Written by Junio C Hamano <gitster@pobox.com> and the git-list
<git@vger.kernel.org>.

Documentation
-------------
Initial documentation was part of the linkgit:git[7] man page.
Christian Couder <chriscool@tuxfamily.org> extracted and rewrote it a
little. Maintenance is done by the git-list <git@vger.kernel.org>.

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