git-var(1)
==========

NAME
----
git-var - Show a Git logical variable


SYNOPSIS
--------
[verse]
'git var' (-l | <variable>)

DESCRIPTION
-----------
Prints a Git logical variable. Exits with code 1 if the variable has
no value.

OPTIONS
-------
-l::
	Display the logical variables. In addition, all the
	variables of the Git configuration file .git/config are listed
	as well. (However, the configuration variables listing functionality
	is deprecated in favor of `git config -l`.)

EXAMPLES
--------
	$ git var GIT_AUTHOR_IDENT
	Eric W. Biederman <ebiederm@lnxi.com> 1121223278 -0600


VARIABLES
---------
GIT_AUTHOR_IDENT::
    The author of a piece of code.

GIT_COMMITTER_IDENT::
    The person who put a piece of code into Git.

GIT_EDITOR::
    Text editor for use by Git commands.  The value is meant to be
    interpreted by the shell when it is used.  Examples: `~/bin/vi`,
    `$SOME_ENVIRONMENT_VARIABLE`, `"C:\Program Files\Vim\gvim.exe"
    --nofork`.  The order of preference is the `$GIT_EDITOR`
    environment variable, then `core.editor` configuration, then
    `$VISUAL`, then `$EDITOR`, and then the default chosen at compile
    time, which is usually 'vi'.
ifdef::git-default-editor[]
    The build you are using chose '{git-default-editor}' as the default.
endif::git-default-editor[]

GIT_SEQUENCE_EDITOR::
    Text editor used to edit the 'todo' file while running `git rebase
    -i`. Like `GIT_EDITOR`, the value is meant to be interpreted by
    the shell when it is used. The order of preference is the
    `$GIT_SEQUENCE_EDITOR` environment variable, then
    `sequence.editor` configuration, and then the value of `git var
    GIT_EDITOR`.

GIT_PAGER::
    Text viewer for use by Git commands (e.g., 'less').  The value
    is meant to be interpreted by the shell.  The order of preference
    is the `$GIT_PAGER` environment variable, then `core.pager`
    configuration, then `$PAGER`, and then the default chosen at
    compile time (usually 'less').
ifdef::git-default-pager[]
    The build you are using chose '{git-default-pager}' as the default.
endif::git-default-pager[]

GIT_DEFAULT_BRANCH::
    The name of the first branch created in newly initialized repositories.

GIT_SHELL_PATH::
    The path of the binary providing the POSIX shell for commands which use the shell.

GIT_ATTR_SYSTEM::
    The path to the system linkgit:gitattributes[5] file, if one is enabled.

GIT_ATTR_GLOBAL::
    The path to the global (per-user) linkgit:gitattributes[5] file.

GIT_CONFIG_SYSTEM::
    The path to the system configuration file, if one is enabled.

GIT_CONFIG_GLOBAL::
    The path to the global (per-user) configuration files, if any.

Most path values contain only one value. However, some can contain multiple
values, which are separated by newlines, and are listed in order from highest to
lowest priority.  Callers should be prepared for any such path value to contain
multiple items.

Note that paths are printed even if they do not exist, but not if they are
disabled by other environment variables.

SEE ALSO
--------
linkgit:git-commit-tree[1]
linkgit:git-tag[1]
linkgit:git-config[1]

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