credentials - How can I save username and password in Git?

ID : 446

viewed : 171

Tags : gitcredentialsgit-configgit-extensionsgit

Top 5 Answer for credentials - How can I save username and password in Git?

vote vote


Attention: This method saves the credentials in plaintext on your PC's disk. Everyone on your computer can access it, e.g. malicious NPM modules.


git config --global credential.helper store 


git pull 

provide a username and password and those details will then be remembered later. The credentials are stored in a file on the disk, with the disk permissions of "just user readable/writable" but still in plaintext.

If you want to change the password later

git pull 

Will fail, because the password is incorrect, git then removes the offending user+password from the ~/.git-credentials file, so now re-run

git pull 

to provide a new password so it works as earlier.

vote vote


You can use the git config to enable credentials storage in Git.

git config --global credential.helper store 

When running this command, the first time you pull or push from the remote repository, you'll get asked about the username and password.

Afterwards, for consequent communications with the remote repository you don't have to provide the username and password.

The storage format is a .git-credentials file, stored in plaintext.

Also, you can use other helpers for the git config credential.helper, namely memory cache:

git config credential.helper 'cache --timeout=<timeout>' 

which takes an optional timeout parameter, determining for how long the credentials will be kept in memory. Using the helper, the credentials will never touch the disk and will be erased after the specified timeout. The default value is 900 seconds (15 minutes).

Warning: If you use this method, your Git account passwords will be saved in plaintext format, in the global .gitconfig file, e.g in Linux it will be /home/[username]/.gitconfig.

If this is undesirable to you, use an ssh key for your accounts instead.

vote vote


Recommended and secure method: SSH

Create an SSH GitHub key. Go to github.comSettingsSSH and GPG keysNew SSH Key. Now save your private key to your computer.

Then, if the private key is saved as id_rsa in the ~/.ssh/ directory, we add it for authentication as such:

ssh-add -K ~/.ssh/id_rsa 

A more secure method: Caching

We can use git-credential-cache to cache our username and password for a time period. Simply enter the following in your CLI (terminal or command prompt):

git config --global credential.helper cache 

You can also set the timeout period (in seconds) as such:

git config --global credential.helper 'cache --timeout=3600' 

An even less secure method

Git-credential-store may also be used, but it saves passwords in a plain text file on your disk as such:

git config credential.helper store 
vote vote


Turn on the credential helper so that Git will save your password in memory for some time:

In Terminal, enter the following:

# Set Git to use the credential memory cache git config --global credential.helper cache 

By default, Git will cache your password for 15 minutes.

To change the default password cache timeout, enter the following:

# Set the cache to timeout after 1 hour (setting is in seconds) git config --global credential.helper 'cache --timeout=3600' 

From GitHub Help.

vote vote


You can edit the ~/.gitconfig file to store your credentials:

sudo nano ~/.gitconfig 

Which should already have

[user]         email =         user = gitUSER 

You should add the following at the bottom of this file.

[credential]         helper = store 

The reason I recommend this option is because it is global and if at any point you need to remove the option you know where to go and change it.

Only use this option in you personal computer.

Then when you pull | clone| enter you Git password, in general, the password will be saved in ~/.git-credentials in the format 

Where DOMAIN.XXX could be,, or others

See the documentation.

Restart your terminal.

Top 3 video Explaining credentials - How can I save username and password in Git?