git(1)
======

NAME
----
git - the stupid content tracker


SYNOPSIS
--------
[verse]
'git' [--version] [--help] [-c <name>=<value>]
    [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]
    [-p|--paginate|--no-pager] [--no-replace-objects] [--bare]
    [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]
    <command> [<args>]

DESCRIPTION
-----------
Git is a fast, scalable, distributed revision control system with an
unusually rich command set that provides both high-level operations
and full access to internals.

See linkgit:gittutorial[7] to get started, then see
link:everyday.html[Everyday Git] for a useful minimum set of commands, and
"man git-commandname" for documentation of each command.  CVS users may
also want to read linkgit:gitcvs-migration[7].  See
the link:user-manual.html[Git User's Manual] for a more in-depth
introduction.

The '<command>' is either a name of a Git command (see below) or an alias
as defined in the configuration file (see linkgit:git-config[1]).

Formatted and hyperlinked version of the latest git
documentation can be viewed at
`http://www.kernel.org/pub/software/scm/git/docs/`.

ifdef::stalenotes[]
[NOTE]
============

You are reading the documentation for the latest (possibly
unreleased) version of git, that is available from 'master'
branch of the `git.git` repository.
Documentation for older releases are available here:

* link:v1.7.9.4/git.html[documentation for release 1.7.9.4]

* release notes for
  link:RelNotes/1.7.9.4.txt[1.7.9.4],
  link:RelNotes/1.7.9.3.txt[1.7.9.3],
  link:RelNotes/1.7.9.2.txt[1.7.9.2],
  link:RelNotes/1.7.9.1.txt[1.7.9.1],
  link:RelNotes/1.7.9.txt[1.7.9].

* link:v1.7.8.4/git.html[documentation for release 1.7.8.4]

* release notes for
  link:RelNotes/1.7.8.4.txt[1.7.8.4],
  link:RelNotes/1.7.8.3.txt[1.7.8.3],
  link:RelNotes/1.7.8.2.txt[1.7.8.2],
  link:RelNotes/1.7.8.1.txt[1.7.8.1],
  link:RelNotes/1.7.8.txt[1.7.8].

* link:v1.7.7.6/git.html[documentation for release 1.7.7.6]

* release notes for
  link:RelNotes/1.7.7.6.txt[1.7.7.6],
  link:RelNotes/1.7.7.5.txt[1.7.7.5],
  link:RelNotes/1.7.7.4.txt[1.7.7.4],
  link:RelNotes/1.7.7.3.txt[1.7.7.3],
  link:RelNotes/1.7.7.2.txt[1.7.7.2],
  link:RelNotes/1.7.7.1.txt[1.7.7.1],
  link:RelNotes/1.7.7.txt[1.7.7].

* link:v1.7.6.6/git.html[documentation for release 1.7.6.6]

* release notes for
  link:RelNotes/1.7.6.6.txt[1.7.6.6],
  link:RelNotes/1.7.6.5.txt[1.7.6.5],
  link:RelNotes/1.7.6.4.txt[1.7.6.4],
  link:RelNotes/1.7.6.3.txt[1.7.6.3],
  link:RelNotes/1.7.6.2.txt[1.7.6.2],
  link:RelNotes/1.7.6.1.txt[1.7.6.1],
  link:RelNotes/1.7.6.txt[1.7.6].

* link:v1.7.5.4/git.html[documentation for release 1.7.5.4]

* release notes for
  link:RelNotes/1.7.5.4.txt[1.7.5.4],
  link:RelNotes/1.7.5.3.txt[1.7.5.3],
  link:RelNotes/1.7.5.2.txt[1.7.5.2],
  link:RelNotes/1.7.5.1.txt[1.7.5.1],
  link:RelNotes/1.7.5.txt[1.7.5].

* link:v1.7.4.5/git.html[documentation for release 1.7.4.5]

* release notes for
  link:RelNotes/1.7.4.5.txt[1.7.4.5],
  link:RelNotes/1.7.4.4.txt[1.7.4.4],
  link:RelNotes/1.7.4.3.txt[1.7.4.3],
  link:RelNotes/1.7.4.2.txt[1.7.4.2],
  link:RelNotes/1.7.4.1.txt[1.7.4.1],
  link:RelNotes/1.7.4.txt[1.7.4].

* link:v1.7.3.5/git.html[documentation for release 1.7.3.5]

* release notes for
  link:RelNotes/1.7.3.5.txt[1.7.3.5],
  link:RelNotes/1.7.3.4.txt[1.7.3.4],
  link:RelNotes/1.7.3.3.txt[1.7.3.3],
  link:RelNotes/1.7.3.2.txt[1.7.3.2],
  link:RelNotes/1.7.3.1.txt[1.7.3.1],
  link:RelNotes/1.7.3.txt[1.7.3].

* link:v1.7.2.5/git.html[documentation for release 1.7.2.5]

* release notes for
  link:RelNotes/1.7.2.5.txt[1.7.2.5],
  link:RelNotes/1.7.2.4.txt[1.7.2.4],
  link:RelNotes/1.7.2.3.txt[1.7.2.3],
  link:RelNotes/1.7.2.2.txt[1.7.2.2],
  link:RelNotes/1.7.2.1.txt[1.7.2.1],
  link:RelNotes/1.7.2.txt[1.7.2].

* link:v1.7.1.4/git.html[documentation for release 1.7.1.4]

* release notes for
  link:RelNotes/1.7.1.4.txt[1.7.1.4],
  link:RelNotes/1.7.1.3.txt[1.7.1.3],
  link:RelNotes/1.7.1.2.txt[1.7.1.2],
  link:RelNotes/1.7.1.1.txt[1.7.1.1],
  link:RelNotes/1.7.1.txt[1.7.1].

* link:v1.7.0.9/git.html[documentation for release 1.7.0.9]

* release notes for
  link:RelNotes/1.7.0.9.txt[1.7.0.9],
  link:RelNotes/1.7.0.8.txt[1.7.0.8],
  link:RelNotes/1.7.0.7.txt[1.7.0.7],
  link:RelNotes/1.7.0.6.txt[1.7.0.6],
  link:RelNotes/1.7.0.5.txt[1.7.0.5],
  link:RelNotes/1.7.0.4.txt[1.7.0.4],
  link:RelNotes/1.7.0.3.txt[1.7.0.3],
  link:RelNotes/1.7.0.2.txt[1.7.0.2],
  link:RelNotes/1.7.0.1.txt[1.7.0.1],
  link:RelNotes/1.7.0.txt[1.7.0].

* link:v1.6.6.3/git.html[documentation for release 1.6.6.3]

* release notes for
  link:RelNotes/1.6.6.3.txt[1.6.6.3],
  link:RelNotes/1.6.6.2.txt[1.6.6.2],
  link:RelNotes/1.6.6.1.txt[1.6.6.1],
  link:RelNotes/1.6.6.txt[1.6.6].

* link:v1.6.5.9/git.html[documentation for release 1.6.5.9]

* release notes for
  link:RelNotes/1.6.5.9.txt[1.6.5.9],
  link:RelNotes/1.6.5.8.txt[1.6.5.8],
  link:RelNotes/1.6.5.7.txt[1.6.5.7],
  link:RelNotes/1.6.5.6.txt[1.6.5.6],
  link:RelNotes/1.6.5.5.txt[1.6.5.5],
  link:RelNotes/1.6.5.4.txt[1.6.5.4],
  link:RelNotes/1.6.5.3.txt[1.6.5.3],
  link:RelNotes/1.6.5.2.txt[1.6.5.2],
  link:RelNotes/1.6.5.1.txt[1.6.5.1],
  link:RelNotes/1.6.5.txt[1.6.5].

* link:v1.6.4.5/git.html[documentation for release 1.6.4.5]

* release notes for
  link:RelNotes/1.6.4.5.txt[1.6.4.5],
  link:RelNotes/1.6.4.4.txt[1.6.4.4],
  link:RelNotes/1.6.4.3.txt[1.6.4.3],
  link:RelNotes/1.6.4.2.txt[1.6.4.2],
  link:RelNotes/1.6.4.1.txt[1.6.4.1],
  link:RelNotes/1.6.4.txt[1.6.4].

* link:v1.6.3.4/git.html[documentation for release 1.6.3.4]

* release notes for
  link:RelNotes/1.6.3.4.txt[1.6.3.4],
  link:RelNotes/1.6.3.3.txt[1.6.3.3],
  link:RelNotes/1.6.3.2.txt[1.6.3.2],
  link:RelNotes/1.6.3.1.txt[1.6.3.1],
  link:RelNotes/1.6.3.txt[1.6.3].

* release notes for
  link:RelNotes/1.6.2.5.txt[1.6.2.5],
  link:RelNotes/1.6.2.4.txt[1.6.2.4],
  link:RelNotes/1.6.2.3.txt[1.6.2.3],
  link:RelNotes/1.6.2.2.txt[1.6.2.2],
  link:RelNotes/1.6.2.1.txt[1.6.2.1],
  link:RelNotes/1.6.2.txt[1.6.2].

* link:v1.6.1.3/git.html[documentation for release 1.6.1.3]

* release notes for
  link:RelNotes/1.6.1.3.txt[1.6.1.3],
  link:RelNotes/1.6.1.2.txt[1.6.1.2],
  link:RelNotes/1.6.1.1.txt[1.6.1.1],
  link:RelNotes/1.6.1.txt[1.6.1].

* link:v1.6.0.6/git.html[documentation for release 1.6.0.6]

* release notes for
  link:RelNotes/1.6.0.6.txt[1.6.0.6],
  link:RelNotes/1.6.0.5.txt[1.6.0.5],
  link:RelNotes/1.6.0.4.txt[1.6.0.4],
  link:RelNotes/1.6.0.3.txt[1.6.0.3],
  link:RelNotes/1.6.0.2.txt[1.6.0.2],
  link:RelNotes/1.6.0.1.txt[1.6.0.1],
  link:RelNotes/1.6.0.txt[1.6.0].

* link:v1.5.6.6/git.html[documentation for release 1.5.6.6]

* release notes for
  link:RelNotes/1.5.6.6.txt[1.5.6.6],
  link:RelNotes/1.5.6.5.txt[1.5.6.5],
  link:RelNotes/1.5.6.4.txt[1.5.6.4],
  link:RelNotes/1.5.6.3.txt[1.5.6.3],
  link:RelNotes/1.5.6.2.txt[1.5.6.2],
  link:RelNotes/1.5.6.1.txt[1.5.6.1],
  link:RelNotes/1.5.6.txt[1.5.6].

* link:v1.5.5.6/git.html[documentation for release 1.5.5.6]

* release notes for
  link:RelNotes/1.5.5.6.txt[1.5.5.6],
  link:RelNotes/1.5.5.5.txt[1.5.5.5],
  link:RelNotes/1.5.5.4.txt[1.5.5.4],
  link:RelNotes/1.5.5.3.txt[1.5.5.3],
  link:RelNotes/1.5.5.2.txt[1.5.5.2],
  link:RelNotes/1.5.5.1.txt[1.5.5.1],
  link:RelNotes/1.5.5.txt[1.5.5].

* link:v1.5.4.7/git.html[documentation for release 1.5.4.7]

* release notes for
  link:RelNotes/1.5.4.7.txt[1.5.4.7],
  link:RelNotes/1.5.4.6.txt[1.5.4.6],
  link:RelNotes/1.5.4.5.txt[1.5.4.5],
  link:RelNotes/1.5.4.4.txt[1.5.4.4],
  link:RelNotes/1.5.4.3.txt[1.5.4.3],
  link:RelNotes/1.5.4.2.txt[1.5.4.2],
  link:RelNotes/1.5.4.1.txt[1.5.4.1],
  link:RelNotes/1.5.4.txt[1.5.4].

* link:v1.5.3.8/git.html[documentation for release 1.5.3.8]

* release notes for
  link:RelNotes/1.5.3.8.txt[1.5.3.8],
  link:RelNotes/1.5.3.7.txt[1.5.3.7],
  link:RelNotes/1.5.3.6.txt[1.5.3.6],
  link:RelNotes/1.5.3.5.txt[1.5.3.5],
  link:RelNotes/1.5.3.4.txt[1.5.3.4],
  link:RelNotes/1.5.3.3.txt[1.5.3.3],
  link:RelNotes/1.5.3.2.txt[1.5.3.2],
  link:RelNotes/1.5.3.1.txt[1.5.3.1],
  link:RelNotes/1.5.3.txt[1.5.3].

* link:v1.5.2.5/git.html[documentation for release 1.5.2.5]

* release notes for
  link:RelNotes/1.5.2.5.txt[1.5.2.5],
  link:RelNotes/1.5.2.4.txt[1.5.2.4],
  link:RelNotes/1.5.2.3.txt[1.5.2.3],
  link:RelNotes/1.5.2.2.txt[1.5.2.2],
  link:RelNotes/1.5.2.1.txt[1.5.2.1],
  link:RelNotes/1.5.2.txt[1.5.2].

* link:v1.5.1.6/git.html[documentation for release 1.5.1.6]

* release notes for
  link:RelNotes/1.5.1.6.txt[1.5.1.6],
  link:RelNotes/1.5.1.5.txt[1.5.1.5],
  link:RelNotes/1.5.1.4.txt[1.5.1.4],
  link:RelNotes/1.5.1.3.txt[1.5.1.3],
  link:RelNotes/1.5.1.2.txt[1.5.1.2],
  link:RelNotes/1.5.1.1.txt[1.5.1.1],
  link:RelNotes/1.5.1.txt[1.5.1].

* link:v1.5.0.7/git.html[documentation for release 1.5.0.7]

* release notes for
  link:RelNotes/1.5.0.7.txt[1.5.0.7],
  link:RelNotes/1.5.0.6.txt[1.5.0.6],
  link:RelNotes/1.5.0.5.txt[1.5.0.5],
  link:RelNotes/1.5.0.3.txt[1.5.0.3],
  link:RelNotes/1.5.0.2.txt[1.5.0.2],
  link:RelNotes/1.5.0.1.txt[1.5.0.1],
  link:RelNotes/1.5.0.txt[1.5.0].

* documentation for release link:v1.4.4.4/git.html[1.4.4.4],
  link:v1.3.3/git.html[1.3.3],
  link:v1.2.6/git.html[1.2.6],
  link:v1.0.13/git.html[1.0.13].

============

endif::stalenotes[]

OPTIONS
-------
--version::
	Prints the git suite version that the 'git' program came from.

--help::
	Prints the synopsis and a list of the most commonly used
	commands. If the option '--all' or '-a' is given then all
	available commands are printed. If a git command is named this
	option will bring up the manual page for that command.
+
Other options are available to control how the manual page is
displayed. See linkgit:git-help[1] for more information,
because `git --help ...` is converted internally into `git
help ...`.

-c <name>=<value>::
	Pass a configuration parameter to the command. The value
	given will override values from configuration files.
	The <name> is expected in the same format as listed by
	'git config' (subkeys separated by dots).

--exec-path[=<path>]::
	Path to wherever your core git programs are installed.
	This can also be controlled by setting the GIT_EXEC_PATH
	environment variable. If no path is given, 'git' will print
	the current setting and then exit.

--html-path::
	Print the path, without trailing slash, where git's HTML
	documentation is installed and exit.

--man-path::
	Print the manpath (see `man(1)`) for the man pages for
	this version of git and exit.

--info-path::
	Print the path where the Info files documenting this
	version of git are installed and exit.

-p::
--paginate::
	Pipe all output into 'less' (or if set, $PAGER) if standard
	output is a terminal.  This overrides the `pager.<cmd>`
	configuration options (see the "Configuration Mechanism" section
	below).

--no-pager::
	Do not pipe git output into a pager.

--git-dir=<path>::
	Set the path to the repository. This can also be controlled by
	setting the GIT_DIR environment variable. It can be an absolute
	path or relative path to current working directory.

--work-tree=<path>::
	Set the path to the working tree. It can be an absolute path
	or a path relative to the current working directory.
	This can also be controlled by setting the GIT_WORK_TREE
	environment variable and the core.worktree configuration
	variable (see core.worktree in linkgit:git-config[1] for a
	more detailed discussion).

--namespace=<path>::
	Set the git namespace.  See linkgit:gitnamespaces[7] for more
	details.  Equivalent to setting the `GIT_NAMESPACE` environment
	variable.

--bare::
	Treat the repository as a bare repository.  If GIT_DIR
	environment is not set, it is set to the current working
	directory.

--no-replace-objects::
	Do not use replacement refs to replace git objects. See
	linkgit:git-replace[1] for more information.


FURTHER DOCUMENTATION
---------------------

See the references above to get started using git.  The following is
probably more detail than necessary for a first-time user.

The link:user-manual.html#git-concepts[git concepts chapter of the
user-manual] and linkgit:gitcore-tutorial[7] both provide
introductions to the underlying git architecture.

See linkgit:gitworkflows[7] for an overview of recommended workflows.

See also the link:howto-index.html[howto] documents for some useful
examples.

The internals are documented in the
link:technical/api-index.html[GIT API documentation].

GIT COMMANDS
------------

We divide git into high level ("porcelain") commands and low level
("plumbing") commands.

High-level commands (porcelain)
-------------------------------

We separate the porcelain commands into the main commands and some
ancillary user utilities.

Main porcelain commands
~~~~~~~~~~~~~~~~~~~~~~~

include::cmds-mainporcelain.txt[]

Ancillary Commands
~~~~~~~~~~~~~~~~~~
Manipulators:

include::cmds-ancillarymanipulators.txt[]

Interrogators:

include::cmds-ancillaryinterrogators.txt[]


Interacting with Others
~~~~~~~~~~~~~~~~~~~~~~~

These commands are to interact with foreign SCM and with other
people via patch over e-mail.

include::cmds-foreignscminterface.txt[]


Low-level commands (plumbing)
-----------------------------

Although git includes its
own porcelain layer, its low-level commands are sufficient to support
development of alternative porcelains.  Developers of such porcelains
might start by reading about linkgit:git-update-index[1] and
linkgit:git-read-tree[1].

The interface (input, output, set of options and the semantics)
to these low-level commands are meant to be a lot more stable
than Porcelain level commands, because these commands are
primarily for scripted use.  The interface to Porcelain commands
on the other hand are subject to change in order to improve the
end user experience.

The following description divides
the low-level commands into commands that manipulate objects (in
the repository, index, and working tree), commands that interrogate and
compare objects, and commands that move objects and references between
repositories.


Manipulation commands
~~~~~~~~~~~~~~~~~~~~~

include::cmds-plumbingmanipulators.txt[]


Interrogation commands
~~~~~~~~~~~~~~~~~~~~~~

include::cmds-plumbinginterrogators.txt[]

In general, the interrogate commands do not touch the files in
the working tree.


Synching repositories
~~~~~~~~~~~~~~~~~~~~~

include::cmds-synchingrepositories.txt[]

The following are helper commands used by the above; end users
typically do not use them directly.

include::cmds-synchelpers.txt[]


Internal helper commands
~~~~~~~~~~~~~~~~~~~~~~~~

These are internal helper commands used by other commands; end
users typically do not use them directly.

include::cmds-purehelpers.txt[]


Configuration Mechanism
-----------------------

Starting from 0.99.9 (actually mid 0.99.8.GIT), `.git/config` file
is used to hold per-repository configuration options.  It is a
simple text file modeled after `.ini` format familiar to some
people.  Here is an example:

------------
#
# A '#' or ';' character indicates a comment.
#

; core variables
[core]
	; Don't trust file modes
	filemode = false

; user identity
[user]
	name = "Junio C Hamano"
	email = "junkio@twinsun.com"

------------

Various commands read from the configuration file and adjust
their operation accordingly.  See linkgit:git-config[1] for a
list.


Identifier Terminology
----------------------
<object>::
	Indicates the object name for any type of object.

<blob>::
	Indicates a blob object name.

<tree>::
	Indicates a tree object name.

<commit>::
	Indicates a commit object name.

<tree-ish>::
	Indicates a tree, commit or tag object name.  A
	command that takes a <tree-ish> argument ultimately wants to
	operate on a <tree> object but automatically dereferences
	<commit> and <tag> objects that point at a <tree>.

<commit-ish>::
	Indicates a commit or tag object name.  A
	command that takes a <commit-ish> argument ultimately wants to
	operate on a <commit> object but automatically dereferences
	<tag> objects that point at a <commit>.

<type>::
	Indicates that an object type is required.
	Currently one of: `blob`, `tree`, `commit`, or `tag`.

<file>::
	Indicates a filename - almost always relative to the
	root of the tree structure `GIT_INDEX_FILE` describes.

Symbolic Identifiers
--------------------
Any git command accepting any <object> can also use the following
symbolic notation:

HEAD::
	indicates the head of the current branch.

<tag>::
	a valid tag 'name'
	(i.e. a `refs/tags/<tag>` reference).

<head>::
	a valid head 'name'
	(i.e. a `refs/heads/<head>` reference).

For a more complete list of ways to spell object names, see
"SPECIFYING REVISIONS" section in linkgit:gitrevisions[7].


File/Directory Structure
------------------------

Please see the linkgit:gitrepository-layout[5] document.

Read linkgit:githooks[5] for more details about each hook.

Higher level SCMs may provide and manage additional information in the
`$GIT_DIR`.


Terminology
-----------
Please see linkgit:gitglossary[7].


Environment Variables
---------------------
Various git commands use the following environment variables:

The git Repository
~~~~~~~~~~~~~~~~~~
These environment variables apply to 'all' core git commands. Nb: it
is worth noting that they may be used/overridden by SCMS sitting above
git so take care if using Cogito etc.

'GIT_INDEX_FILE'::
	This environment allows the specification of an alternate
	index file. If not specified, the default of `$GIT_DIR/index`
	is used.

'GIT_OBJECT_DIRECTORY'::
	If the object storage directory is specified via this
	environment variable then the sha1 directories are created
	underneath - otherwise the default `$GIT_DIR/objects`
	directory is used.

'GIT_ALTERNATE_OBJECT_DIRECTORIES'::
	Due to the immutable nature of git objects, old objects can be
	archived into shared, read-only directories. This variable
	specifies a ":" separated (on Windows ";" separated) list
	of git object directories which can be used to search for git
	objects. New objects will not be written to these directories.

'GIT_DIR'::
	If the 'GIT_DIR' environment variable is set then it
	specifies a path to use instead of the default `.git`
	for the base of the repository.

'GIT_WORK_TREE'::
	Set the path to the working tree.  The value will not be
	used in combination with repositories found automatically in
	a .git directory (i.e. $GIT_DIR is not set).
	This can also be controlled by the '--work-tree' command line
	option and the core.worktree configuration variable.

'GIT_NAMESPACE'::
	Set the git namespace; see linkgit:gitnamespaces[7] for details.
	The '--namespace' command-line option also sets this value.

'GIT_CEILING_DIRECTORIES'::
	This should be a colon-separated list of absolute paths.
	If set, it is a list of directories that git should not chdir
	up into while looking for a repository directory.
	It will not exclude the current working directory or
	a GIT_DIR set on the command line or in the environment.
	(Useful for excluding slow-loading network directories.)

'GIT_DISCOVERY_ACROSS_FILESYSTEM'::
	When run in a directory that does not have ".git" repository
	directory, git tries to find such a directory in the parent
	directories to find the top of the working tree, but by default it
	does not cross filesystem boundaries.  This environment variable
	can be set to true to tell git not to stop at filesystem
	boundaries.  Like 'GIT_CEILING_DIRECTORIES', this will not affect
	an explicit repository directory set via 'GIT_DIR' or on the
	command line.

git Commits
~~~~~~~~~~~
'GIT_AUTHOR_NAME'::
'GIT_AUTHOR_EMAIL'::
'GIT_AUTHOR_DATE'::
'GIT_COMMITTER_NAME'::
'GIT_COMMITTER_EMAIL'::
'GIT_COMMITTER_DATE'::
'EMAIL'::
	see linkgit:git-commit-tree[1]

git Diffs
~~~~~~~~~
'GIT_DIFF_OPTS'::
	Only valid setting is "--unified=??" or "-u??" to set the
	number of context lines shown when a unified diff is created.
	This takes precedence over any "-U" or "--unified" option
	value passed on the git diff command line.

'GIT_EXTERNAL_DIFF'::
	When the environment variable 'GIT_EXTERNAL_DIFF' is set, the
	program named by it is called, instead of the diff invocation
	described above.  For a path that is added, removed, or modified,
        'GIT_EXTERNAL_DIFF' is called with 7 parameters:

	path old-file old-hex old-mode new-file new-hex new-mode
+
where:

	<old|new>-file:: are files GIT_EXTERNAL_DIFF can use to read the
                         contents of <old|new>,
	<old|new>-hex:: are the 40-hexdigit SHA1 hashes,
	<old|new>-mode:: are the octal representation of the file modes.
+
The file parameters can point at the user's working file
(e.g. `new-file` in "git-diff-files"), `/dev/null` (e.g. `old-file`
when a new file is added), or a temporary file (e.g. `old-file` in the
index).  'GIT_EXTERNAL_DIFF' should not worry about unlinking the
temporary file --- it is removed when 'GIT_EXTERNAL_DIFF' exits.
+
For a path that is unmerged, 'GIT_EXTERNAL_DIFF' is called with 1
parameter, <path>.

other
~~~~~
'GIT_MERGE_VERBOSITY'::
	A number controlling the amount of output shown by
	the recursive merge strategy.  Overrides merge.verbosity.
	See linkgit:git-merge[1]

'GIT_PAGER'::
	This environment variable overrides `$PAGER`. If it is set
	to an empty string or to the value "cat", git will not launch
	a pager.  See also the `core.pager` option in
	linkgit:git-config[1].

'GIT_EDITOR'::
	This environment variable overrides `$EDITOR` and `$VISUAL`.
	It is used by several git comands when, on interactive mode,
	an editor is to be launched. See also linkgit:git-var[1]
	and the `core.editor` option in linkgit:git-config[1].

'GIT_SSH'::
	If this environment variable is set then 'git fetch'
	and 'git push' will use this command instead
	of 'ssh' when they need to connect to a remote system.
	The '$GIT_SSH' command will be given exactly two arguments:
	the 'username@host' (or just 'host') from the URL and the
	shell command to execute on that remote system.
+
To pass options to the program that you want to list in GIT_SSH
you will need to wrap the program and options into a shell script,
then set GIT_SSH to refer to the shell script.
+
Usually it is easier to configure any desired options through your
personal `.ssh/config` file.  Please consult your ssh documentation
for further details.

'GIT_ASKPASS'::
	If this environment variable is set, then git commands which need to
	acquire passwords or passphrases (e.g. for HTTP or IMAP authentication)
	will call this program with a suitable prompt as command line argument
	and read the password from its STDOUT. See also the 'core.askpass'
	option in linkgit:git-config[1].

'GIT_FLUSH'::
	If this environment variable is set to "1", then commands such
	as 'git blame' (in incremental mode), 'git rev-list', 'git log',
	and 'git whatchanged' will force a flush of the output stream
	after each commit-oriented record have been flushed.   If this
	variable is set to "0", the output of these commands will be done
	using completely buffered I/O.   If this environment variable is
	not set, git will choose buffered or record-oriented flushing
	based on whether stdout appears to be redirected to a file or not.

'GIT_TRACE'::
	If this variable is set to "1", "2" or "true" (comparison
	is case insensitive), git will print `trace:` messages on
	stderr telling about alias expansion, built-in command
	execution and external command execution.
	If this variable is set to an integer value greater than 1
	and lower than 10 (strictly) then git will interpret this
	value as an open file descriptor and will try to write the
	trace messages into this file descriptor.
	Alternatively, if this variable is set to an absolute path
	(starting with a '/' character), git will interpret this
	as a file path and will try to write the trace messages
	into it.

Discussion[[Discussion]]
------------------------

More detail on the following is available from the
link:user-manual.html#git-concepts[git concepts chapter of the
user-manual] and linkgit:gitcore-tutorial[7].

A git project normally consists of a working directory with a ".git"
subdirectory at the top level.  The .git directory contains, among other
things, a compressed object database representing the complete history
of the project, an "index" file which links that history to the current
contents of the working tree, and named pointers into that history such
as tags and branch heads.

The object database contains objects of three main types: blobs, which
hold file data; trees, which point to blobs and other trees to build up
directory hierarchies; and commits, which each reference a single tree
and some number of parent commits.

The commit, equivalent to what other systems call a "changeset" or
"version", represents a step in the project's history, and each parent
represents an immediately preceding step.  Commits with more than one
parent represent merges of independent lines of development.

All objects are named by the SHA1 hash of their contents, normally
written as a string of 40 hex digits.  Such names are globally unique.
The entire history leading up to a commit can be vouched for by signing
just that commit.  A fourth object type, the tag, is provided for this
purpose.

When first created, objects are stored in individual files, but for
efficiency may later be compressed together into "pack files".

Named pointers called refs mark interesting points in history.  A ref
may contain the SHA1 name of an object or the name of another ref.  Refs
with names beginning `ref/head/` contain the SHA1 name of the most
recent commit (or "head") of a branch under development.  SHA1 names of
tags of interest are stored under `ref/tags/`.  A special ref named
`HEAD` contains the name of the currently checked-out branch.

The index file is initialized with a list of all paths and, for each
path, a blob object and a set of attributes.  The blob object represents
the contents of the file as of the head of the current branch.  The
attributes (last modified time, size, etc.) are taken from the
corresponding file in the working tree.  Subsequent changes to the
working tree can be found by comparing these attributes.  The index may
be updated with new content, and new commits may be created from the
content stored in the index.

The index is also capable of storing multiple entries (called "stages")
for a given pathname.  These stages are used to hold the various
unmerged version of a file when a merge is in progress.

Authors
-------
Git was started by Linus Torvalds, and is currently maintained by Junio
C Hamano. Numerous contributions have come from the git mailing list
<git@vger.kernel.org>. For a more complete list of contributors, see
http://git-scm.com/about. If you have a clone of git.git itself, the
output of linkgit:git-shortlog[1] and linkgit:git-blame[1] can show you
the authors for specific parts of the project.

Reporting Bugs
--------------

Report bugs to the Git mailing list <git@vger.kernel.org> where the
development and maintenance is primarily done.  You do not have to be
subscribed to the list to send a message there.

SEE ALSO
--------
linkgit:gittutorial[7], linkgit:gittutorial-2[7],
link:everyday.html[Everyday Git], linkgit:gitcvs-migration[7],
linkgit:gitglossary[7], linkgit:gitcore-tutorial[7],
linkgit:gitcli[7], link:user-manual.html[The Git User's Manual],
linkgit:gitworkflows[7]

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