Posted By: Anonymous
I recently switched to synchronizing my repositories to https:// on GitHub (due to firewall issues), and it asks for a password every time.
Is there a way to cache the credentials, instead of authenticating every time that
With Git version 1.7.9 and later
Since Git 1.7.9 (released in late January 2012), there is a neat mechanism in Git to avoid having to type your password all the time for HTTP / HTTPS, called credential helpers. (Thanks to dazonic for pointing out this new feature in the comments below.)
With Git 1.7.9 or later, you can just use one of the following credential helpers:
git config --global credential.helper cache
… which tells Git to keep your password cached in memory for (by default) 15 minutes. You can set a longer timeout with:
git config --global credential.helper "cache --timeout=3600"
(That example was suggested in the GitHub help page for Linux.) You can also store your credentials permanently if so desired, see the other answers below.
git config --global credential.helper osxkeychain
git config --global credential.helper wincred # obsolete
With Git for Windows 2.7.3+ (March 2016):
git config --global credential.helper manager
For Linux, you would use (in 2011)
gnome-keyring(or other keyring implementation such as KWallet).
Nowadays (2020), that would be (on Linux)
sudo dnf install git-credential-libsecret git config --global credential.helper /usr/libexec/git-core/git-credential-libsecret
sudo apt-get install libsecret-1-0 libsecret-1-dev cd /usr/share/doc/git/contrib/credential/libsecret sudo make git config --global credential.helper /usr/share/doc/git/contrib/credential/libsecret/git-credential-libsecret
With Git versions before 1.7.9
With versions of Git before 1.7.9, this more secure option is not available, and you’ll need to change the URL that your
origin remote uses to include the password in this fashion:
… in other words with
:password after the username and before the
You can set a new URL for your
origin remote with:
git config remote.origin.url https://you:[email protected]/you/example.git
Make sure that you use
https, and you should be aware that if you do this, your GitHub password will be stored in plaintext in your
.git directory, which is obviously undesirable.
With any Git version (well, since version 0.99)
An alternative approach is to put your username and password in your
~/.netrc file, although, as with keeping the password in the remote URL, this means that your password will be stored on the disk in plain text and is thus less secure and not recommended. However, if you want to take this approach, add the following line to your
machine <hostname> login <username> password <password>
<hostname> with the server’s hostname, and
<password> with your username and password. Also remember to set restrictive file system permissions on that file:
chmod 600 ~/.netrc
Note that on Windows, this file should be called
_netrc, and you may need to define the %HOME% environment variable – for more details see: