-----------
Please see linkgit:gitglossary[7].
Environment Variables
---------------------
Various Git commands pay attention to environment variables and change
their behavior. The environment variables marked as "Boolean" take
their values the same way as Boolean valued configuration variables, i.e.,
"true", "yes", "on" and positive numbers are taken as "yes", while "false",
"no", "off", and "0" are taken as "no".
Here are the variables:
System
~~~~~~
`HOME`::
Specifies the path to the user's home directory. On Windows, if
unset, Git will set a process environment variable equal to:
`$HOMEDRIVE$HOMEPATH` if both `$HOMEDRIVE` and `$HOMEPATH` exist;
otherwise `$USERPROFILE` if `$USERPROFILE` exists.
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 a foreign front-end.
`GIT_INDEX_FILE`::
This environment variable specifies an alternate
index file. If not specified, the default of `$GIT_DIR/index`
is used.
`GIT_INDEX_VERSION`::
This environment variable specifies what index version is used
when writing the index file out. It won't affect existing index
files. By default index file version 2 or 3 is used. See
linkgit:git-update-index[1] for more information.
`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.
+
Entries that begin with `"` (double-quote) will be interpreted
as C-style quoted paths, removing leading and trailing
double-quotes and respecting backslash escapes. E.g., the value
`"path-with-\"-and-:-in-it":vanilla-path` has two paths:
`path-with-"-and-:-in-it` and `vanilla-path`.
`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.
The `--git-dir` command-line option also sets this value.
`GIT_WORK_TREE`::
Set the path to the root of the working tree.
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 (useful for
excluding slow-loading network directories). It will not
exclude the current working directory or a GIT_DIR set on the
command line or in the environment. Normally, Git has to read
the entries in this list and resolve any symlink that
might be present in order to compare them with the current
directory. However, if even this access is slow, you
can add an empty entry to the list to tell Git that the
subsequent entries are not symlinks and needn't be resolved;
e.g.,
`GIT_CEILING_DIRECTORIES=/maybe/symlink::/very/slow/non/symlink`.
`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 Boolean 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