Home Explore Blog CI



git

3rd chunk of `Documentation/gitcredentials.adoc`
22cfef6945cc7dcac48de947e479bf40eb8b78cc66019c4e0000000100000ce8
 `http://example.com` would not
match: Git compares the protocols exactly.  However, you may use wildcards in
the domain name and other pattern matching techniques as with the `http.<URL>.*`
options.

If the "pattern" URL does include a path component, then this too must match
exactly: the context `https://example.com/bar/baz.git` will match a config
entry for `https://example.com/bar/baz.git` (in addition to matching the config
entry for `https://example.com`) but will not match a config entry for
`https://example.com/bar`.


CONFIGURATION OPTIONS
---------------------

Options for a credential context can be configured either in
`credential.*` (which applies to all credentials), or
`credential.<URL>.*`, where <URL> matches the context as described
above.

The following options are available in either location:

helper::

	The name of an external credential helper, and any associated options.
	If the helper name is not an absolute path, then the string `git
	credential-` is prepended. The resulting string is executed by the
	shell (so, for example, setting this to `foo --option=bar` will execute
	`git credential-foo --option=bar` via the shell. See the manual of
	specific helpers for examples of their use.
+
If there are multiple instances of the `credential.helper` configuration
variable, each helper will be tried in turn, and may provide a username,
password, or nothing. Once Git has acquired both a username and a
non-expired password, no more helpers will be tried.
+
If `credential.helper` is configured to the empty string, this resets
the helper list to empty (so you may override a helper set by a
lower-priority config file by configuring the empty-string helper,
followed by whatever set of helpers you would like).

username::

	A default username, if one is not provided in the URL.

useHttpPath::

	By default, Git does not consider the "path" component of an http URL
	to be worth matching via external helpers. This means that a credential
	stored for `https://example.com/foo.git` will also be used for
	`https://example.com/bar.git`. If you do want to distinguish these
	cases, set this option to `true`.


CUSTOM HELPERS
--------------

You can write your own custom helpers to interface with any system in
which you keep credentials.

Credential helpers are programs executed by Git to fetch or save
credentials from and to long-term storage (where "long-term" is simply
longer than a single Git process; e.g., credentials may be stored
in-memory for a few minutes, or indefinitely on disk).

Each helper is specified by a single string in the configuration
variable `credential.helper` (and others, see linkgit:git-config[1]).
The string is transformed by Git into a command to be executed using
these rules:

  1. If the helper string begins with "!", it is considered a shell
     snippet, and everything after the "!" becomes the command.

  2. Otherwise, if the helper string begins with an absolute path, the
     verbatim helper string becomes the command.

  3. Otherwise, the string "git credential-" is prepended to the helper
     string, and the result becomes the command.

The resulting command then has an "operation" argument appended to it
(see below for details), and the result is executed by the shell.

Here are some example specifications:

Title: Configuring and Creating Custom Git Credential Helpers
Summary
This section explains how to configure Git credential helpers, including setting default usernames, using HTTP paths, and creating custom helpers to interface with various credential storage systems, as well as the rules for specifying and executing custom helper commands.