git-credential-store: support XDG_CONFIG_HOME
[git/git.git] / Documentation / git-credential-store.txt
CommitLineData
71e1b4b6
JK
1git-credential-store(1)
2=======================
3
4NAME
5----
c6632eba 6git-credential-store - Helper to store credentials on disk
71e1b4b6
JK
7
8SYNOPSIS
9--------
10-------------------
11git config credential.helper 'store [options]'
12-------------------
13
14DESCRIPTION
15-----------
16
17NOTE: Using this helper will store your passwords unencrypted on disk,
18protected only by filesystem permissions. If this is not an acceptable
19security tradeoff, try linkgit:git-credential-cache[1], or find a helper
20that integrates with secure storage provided by your operating system.
21
22This command stores credentials indefinitely on disk for use by future
2de9b711 23Git programs.
71e1b4b6
JK
24
25You probably don't want to invoke this command directly; it is meant to
26be used as a credential helper by other parts of git. See
27linkgit:gitcredentials[7] or `EXAMPLES` below.
28
29OPTIONS
30-------
31
e50cd67b 32--file=<path>::
71e1b4b6 33
44b22898 34 Use `<path>` to lookup and store credentials. The file will have its
71e1b4b6
JK
35 filesystem permissions set to prevent other users on the system
36 from reading it, but will not be encrypted or otherwise
44b22898
PT
37 protected. If not specified, credentials will be searched for from
38 `~/.git-credentials` and `$XDG_CONFIG_HOME/git/credentials`, and
39 credentials will be written to `~/.git-credentials` if it exists, or
40 `$XDG_CONFIG_HOME/git/credentials` if it exists and the former does
41 not. See also <<FILES>>.
42
43[[FILES]]
44FILES
45-----
46
47If not set explicitly with '--file', there are two files where
48git-credential-store will search for credentials in order of precedence:
49
50~/.git-credentials::
51 User-specific credentials file.
52
53$XDG_CONFIG_HOME/git/credentials::
54 Second user-specific credentials file. If '$XDG_CONFIG_HOME' is not set
55 or empty, `$HOME/.config/git/credentials` will be used. Any credentials
56 stored in this file will not be used if `~/.git-credentials` has a
57 matching credential as well. It is a good idea not to create this file
58 if you sometimes use older versions of Git that do not support it.
59
60For credential lookups, the files are read in the order given above, with the
61first matching credential found taking precedence over credentials found in
62files further down the list.
63
64Credential storage will by default write to the first existing file in the
65list. If none of these files exist, `~/.git-credentials` will be created and
66written to.
67
68When erasing credentials, matching credentials will be erased from all files.
71e1b4b6
JK
69
70EXAMPLES
71--------
72
73The point of this helper is to reduce the number of times you must type
74your username or password. For example:
75
76------------------------------------------
77$ git config credential.helper store
78$ git push http://example.com/repo.git
79Username: <type your username>
80Password: <type your password>
81
82[several days later]
83$ git push http://example.com/repo.git
84[your credentials are used automatically]
85------------------------------------------
86
87STORAGE FORMAT
88--------------
89
90The `.git-credentials` file is stored in plaintext. Each credential is
91stored on its own line as a URL like:
92
93------------------------------
94https://user:pass@example.com
95------------------------------
96
2de9b711 97When Git needs authentication for a particular URL context,
71e1b4b6
JK
98credential-store will consider that context a pattern to match against
99each entry in the credentials file. If the protocol, hostname, and
100username (if we already have one) match, then the password is returned
2de9b711 101to Git. See the discussion of configuration in linkgit:gitcredentials[7]
71e1b4b6
JK
102for more information.
103
104GIT
105---
106Part of the linkgit:git[1] suite