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. 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 'kfmclient' to open the man page in a new konqueror
tab (see 'Note about konqueror' below).

Values for other tools can be used if there is a corresponding
'man.<tool>.cmd' configuration entry (see below).

Multiple values may be given to the 'man.viewer' 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.

man.<tool>.path
~~~~~~~~~~~~~~~

You can explicitly provide a full path to your preferred man viewer by
setting the configuration variable 'man.<tool>.path'. For example, you
can configure the absolute path to konqueror by setting
'man.konqueror.path'. Otherwise, 'git help' assumes the tool is
available in PATH.

man.<tool>.cmd
~~~~~~~~~~~~~~

When the man viewer, specified by the 'man.viewer' configuration
variables, is not among the supported ones, then the corresponding
'man.<tool>.cmd' configuration variable will be looked up. If this
variable exists then the specified tool will be treated as a custom
command and a shell eval will be used to run the command with the man
page passed as arguments.

Note about konqueror
~~~~~~~~~~~~~~~~~~~~

When 'konqueror' is specified in the 'man.viewer' configuration
variable, we launch 'kfmclient' to try to open the man page on an
already opened konqueror in a new tab if possible.

For consistency, we also try such a trick if 'man.konqueror.path' is
set to something like 'A_PATH_TO/konqueror'. That means we will try to
launch 'A_PATH_TO/kfmclient' instead.

If you really want to use 'konqueror', then you can use something like
the following:

------------------------------------------------
	[man]
		viewer = konq

	[man "konq"]
		cmd = A_PATH_TO/konqueror
------------------------------------------------

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
