git-credential(1)
=================

NAME
----
git-credential - Retrieve and store user credentials

SYNOPSIS
--------
------------------
git credential <fill|approve|reject>
------------------

DESCRIPTION
-----------

Git has an internal interface for storing and retrieving credentials
from system-specific helpers, as well as prompting the user for
usernames and passwords. The git-credential command exposes this
interface to scripts which may want to retrieve, store, or prompt for
credentials in the same manner as Git. The design of this scriptable
interface models the internal C API; see
link:technical/api-credentials.html[the Git credential API] for more
background on the concepts.

git-credential takes an "action" option on the command-line (one of
`fill`, `approve`, or `reject`) and reads a credential description
on stdin (see <<IOFMT,INPUT/OUTPUT FORMAT>>).

If the action is `fill`, git-credential will attempt to add "username"
and "password" attributes to the description by reading config files,
by contacting any configured credential helpers, or by prompting the
user. The username and password attributes of the credential
description are then printed to stdout together with the attributes
already provided.

If the action is `approve`, git-credential will send the description
to any configured credential helpers, which may store the credential
for later use.

If the action is `reject`, git-credential will send the description to
any configured credential helpers, which may erase any stored
credential matching the description.

If the action is `approve` or `reject`, no output should be emitted.

TYPICAL USE OF GIT CREDENTIAL
-----------------------------

An application using git-credential will typically use `git
credential` following these steps:

  1. Generate a credential description based on the context.
+
For example, if we want a password for
`https://example.com/foo.git`, we might generate the following
credential description (don't forget the blank line at the end; it
tells `git credential` that the application finished feeding all the
information it has):

	 protocol=https
	 host=example.com
	 path=foo.git

  2. Ask git-credential to give us a username and password for this
     description. This is done by running `git credential fill`,
     feeding the description from step (1) to its standard input. The complete
     credential description (including the credential per se, i.e. the
     login and password) will be produced on standard output, like:

	protocol=https
	host=example.com
	username=bob
	password=secr3t
+
In most cases, this means the attributes given in the input will be
repeated in the output, but Git may also modify the credential
description, for example by removing the `path` attribute when the
protocol is HTTP(s) and `credential.useHttpPath` is false.
+
If the `git credential` knew about the password, this step may
not have involved the user actually typing this password (the
user may have typed a password to unlock the keychain instead,
or no user interaction was done if the keychain was already
unlocked) before it returned `password=secr3t`.

  3. Use the credential (e.g., access the URL with the username and
     password from step (2)), and see if it's accepted.

  4. Report on the success or failure of the password. If the
     credential allowed the operation to complete successfully, then
     it can be marked with an "approve" action to tell `git
     credential` to reuse it in its next invocation. If the credential
     was rejected during the operation, use the "reject" action so
     that `git credential` will ask for a new password in its next
     invocation. In either case, `git credential` should be fed with
     the credential description obtained from step (2) (which also
     contain the ones provided in step (1)).

[[IOFMT]]
INPUT/OUTPUT FORMAT
-------------------

`git credential` reads and/or writes (depending on the action used)
credential information in its standard input/output. This information
can correspond either to keys for which `git credential` will obtain
the login/password information (e.g. host, protocol, path), or to the
actual credential data to be obtained (login/password).

The credential is split into a set of named attributes, with one
attribute per line. Each attribute is
specified by a key-value pair, separated by an `=` (equals) sign,
followed by a newline. The key may contain any bytes except `=`,
newline, or NUL. The value may contain any bytes except newline or NUL.
In both cases, all bytes are treated as-is (i.e., there is no quoting,
and one cannot transmit a value with newline or NUL in it). The list of
attributes is terminated by a blank line or end-of-file.
Git understands the following attributes:

`protocol`::

	The protocol over which the credential will be used (e.g.,
	`https`).

`host`::

	The remote hostname for a network credential.

`path`::

	The path with which the credential will be used. E.g., for
	accessing a remote https repository, this will be the
	repository's path on the server.

`username`::

	The credential's username, if we already have one (e.g., from a
	URL, from the user, or from a previously run helper).

`password`::

	The credential's password, if we are asking it to be stored.

`url`::

	When this special attribute is read by `git credential`, the
	value is parsed as a URL and treated as if its constituent parts
	were read (e.g., `url=https://example.com` would behave as if
	`protocol=https` and `host=example.com` had been provided). This
	can help callers avoid parsing URLs themselves.  Note that any
	components which are missing from the URL (e.g., there is no
	username in the example above) will be set to empty; if you want
	to provide a URL and override some attributes, provide the URL
	attribute first, followed by any overrides.
