I recently switched to synchronising my repositories to https:// on GitHub (due to firewall issues) and it asks for a password every time. It used to be that I had an SSH certificate, and it was enough. Is there a way to bypass the password in my case (using http/https)?
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
For Linux, you can use
gnome-keyring(or other keyring implementation such as KWallet).
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@example.com/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.
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: