775
votes

Whenever I try to push into my repo git asks for both username & password.

I have no problem in re-entering my password each time but the problem is in entering username. I use https to clone my repository.

So, how can I configure git so that it doesn't asks for username on each git push.

I am new to linux but IIRC in windows git push only asks for password.

30
@Wug: But I don't want to store password. I only want to store the username.RanRag
try following those directions and omitting the password line.Wug
there is also an answer on superuser to your initial question - superuser.com/questions/847181/…dk14

30 Answers

1069
votes

Edit (by @dk14 as suggested by moderators and comments)

WARNING: If you use credential.helper store from the answer, your password is going to be stored completely unencrypted ("as is") at ~/.git-credentials. Please consult the comments section below or the answers from the "Linked" section, especially if your employer has zero tolerance for security issues.

Even though accepted, it doesn't answer the actual OP's question about omitting a username only (not password). For the readers with that exact problem @grawity's answer might come in handy.


Original answer (by @Alexander Zhu):

You can store your credentials using the following command

$ git config credential.helper store
$ git push http://example.com/repo.git
Username: <type your username>
Password: <type your password>

Also I suggest you to read
$ git help credentials

214
votes

You can accomplish this in the .git/config file of your local repository. This file contains a section called 'remote' with an entry called 'url'. The 'url' entry should contains the https link of repository you're talking about.

When you prefix the host 'url' with your username, git shouldn't be asking for your username anymore. Here's an example:

url = https://[email protected]
129
votes

Permanently authenticating with Git repositories

Run following command to enable credential caching:

$ git config credential.helper store
$ git push https://github.com/repo.git

Username for 'https://github.com': <USERNAME>
Password for 'https://[email protected]': <PASSWORD>

Use should also specify caching expire

git config --global credential.helper "cache --timeout 7200"

After enabling credential caching, it will be cached for 7200 seconds (2 hour).


Read credentials Docs

$ git help credentials
107
votes

Add new SSH keys as described in this article on GitHub.

If Git still asks you for username & password, try changing https://github.com/ to [email protected]: in remote URL:

$ git config remote.origin.url 
https://github.com/dir/repo.git

$ git config remote.origin.url "[email protected]:dir/repo.git"
62
votes

The easiest way I found was with this command:

git config --global credential.https://github.com.username <your_username>

This works on a site by site basis and modifies your global git config.

To see the changes, use:

git config --global --edit
35
votes

If you are using https instead of ssh, you can edit "url" in .git/config as user701648 says, but if you want you can add also the password:

url = https://username:[email protected]
25
votes

You can set your username for all repositories at a given site by putting something like the following in your Git configuration file. You'll want to change "https://example.com" and "me" to the actual URL and your actual username.

[credential "https://example.com"]
    username = me

(This is directly from "git help credentials")

22
votes

Changing the cloned repo works:

git remote set-url origin [email protected]:gitusername/projectname.git

Using cached credentials works, and setting the timeout period makes things less annoying. If you use the Windows credential helper, that should be the easiest method (especially if SSH is blocked).

19
votes
git config --global credential.helper cache
13
votes

Make sure that you are using SSH instead of http. Check this SO answer.

11
votes

In addition to user701648's answer, you can store your credentials in your home folder (global for all projects), instead of project folder using the following command

$ git config --global credential.helper store
$ git push http://example.com/repo.git
Username: <type your username>
Password: <type your password>
10
votes

When I only git pull, git pull origin xxx, git asks for both username & password.

git config credential.helper store

it works.

10
votes

The easiest way is to create a ~/.netrc file with the following contents:

machine github.com
login YOUR_GITHUB_USERNAME
password YOUR_GITHUB_PASSWORD

(as shown here: https://gist.github.com/ahoward/2885020)

You can even close up the permissions on this file so that no one can read your password by typing:

chmod 600 ~/.netrc
7
votes

If you use SSH version, you will not have any problems with passwords.Only one time you generate SSH key, to tell git, that this pc will work with this github account and never ask me again about any access (for this pc).

How To Generate SSH for Github

5
votes

To avoid entering username, but still be prompted to enter a password, then you can simply clone your repository including the username:

git clone [email protected]/my_repo.git
5
votes

Quick method

get url of your git when inside working dir :

git config remote.origin.url

then :

git config credential.helper store

git push "url of your git"

will ask username and password last one time

done.

5
votes

ssh + key authentication is more reliable way than https + credential.helper

You can configure to use SSH instead of HTTPS for all the repositories as follows:

git config --global url.ssh://[email protected]/.insteadOf https://github.com/

url.<base>.insteadOf is documented here.

4
votes
  1. $ git config credential.helper store

  2. $ git push/push https://github.com/xxx.git

  3. Then enter your user name and password.

  4. Done
3
votes

You can just run

git config --global credential.helper wincred

after installing and logging into GIT for windows in your system.

3
votes

The proper way to solve it is to change the http to ssh.

You can use this git remote rm origin to remove your remote repo.

And then you can add it again with the ssh sintax (which you can copy from github): git remote add origin [email protected]:username/reponame.git .

Check this article. https://www.freecodecamp.org/news/how-to-fix-git-always-asking-for-user-credentials/

3
votes
  1. Open the Windows credential manager and remove the git:https://dev.azure.com/orgname from generic credential. For steps look into Why TFS with GIT is not working from command line?
  2. Delete the .git-credentials files from the folder C:\Users\{username}.
  3. Make sure you update the git latest version from https://git-scm.com/download/win
2
votes

(Only For Mac OS)

for Windows and Linux please refer to Github's documentation link mentioned below.

From Github Documentation: Documentation Link

Caching your GitHub password in Git

  • You need Git 1.7.10 or newer to use the osxkeychain credential helper.

    to check your Git version: git --version

  • to find out osxkeychain helper is already installed:

    git credential-osxkeychain

    if you get following response then you have it already installed and ready to use on your mac:

    > Usage: git credential-osxkeychain <get|store|erase>

    if you don't get a response as shown above then you can install it running following command:

    git credential-osxkeychain

  • to tell git to globally use osxkeychain for git credentials:

    git config --global credential.helper osxkeychain

    It will prompt once before it saves credentials to the keychain.

2
votes

To set the credentials for the entire day that is 24 hours.

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

Else for 1 hour replace the 86400 secs to 3600.

OR

all configuration options for the 'cache' authentication helper:

git help credential-cache

for more information: https://docs.github.com/en/get-started/getting-started-with-git/caching-your-github-credentials-in-git

1
votes

For me this issue appeared when I enabled 2-Factor Authentication (2FA) for my account. I would enter correct credentials and authentication would still fail because of course the terminal authentication does not ask for authentication code.

I simply had to disable 2FA for my account. Upon doing that I had to enter my credentials just one time during git push. They weren't required from then on.

1
votes

This occurs when one downloads using HTTPS rather than the SSH,easiet way which I implemented was I pushed everything as I made a few changes once wherein it asked for the username and password, then I removed the directory from my machine and git clone SSH address. It was solved.

Just clone it using SSH rather than HTTP and it won't ask for username or password.

Also having two-factor authentication creates the problem even when you download using SSH so disabling it solves the issue.

1
votes

I use to store my Git Repository Username and Password on Disk. So git doesn't ask for username and password every time while I push my code

follow these commands to save credentials in the local storage

$ git config credential.helper store
or
$ git config --global credential.helper store

From now on, Git will write credentials to the ~/.git-credentials file for each URL context, when accessed for the first time. To view the content of this file, you can use the cat command as shown.

$ cat  ~/.git-credentials
1
votes

To solve this problem, github recommends Connecting over HTTPS.

Git's documentation discuss how to how to do exactly that using gitcredentials.

Solution 1

Static configuration of usernames for a given authentication context.

https://username:<personal-access-tokens>@repository-url.com

You will find the details in the documentation.

Solution 2

Use credential helpers to cache password (in memory for a short period of time).

git config --global credential.helper cache

Solution 3

Use credential helpers to store password (indefinitely on disk).

git config --global credential.helper 'store --file ~/.my-credentials'

You can find where the credential will be saved (If not set explicitly with --file) in the documentation.

If not set explicitly with --file, there are two files where git-credential-store will search for credentials in order of precedence:

~/.git-credentials

User-specific credentials file. $XDG_CONFIG_HOME/git/credentials

Second user-specific credentials file. If $XDG_CONFIG_HOME is not set or empty, $HOME/.config/git/credentials will be used. Any

credentials stored in this file will not be used if ~/.git-credentials has a matching credential as well. It is a good idea not to create this file if you sometimes use older versions of Git that do not support it.

P.S.

To address the concern:

your password is going to be stored completely unencrypted ("as is") at ~/.git-credentials.

You can always encrypt the file and decrypt it before using.

0
votes

I faced this issue today. If you are facing this issue in November 2020 then you need to update your git version. I received an email telling me about this. Here is what exactly was the email by github team.

We have detected that you recently attempted to authenticate to GitHub using an older version of Git for Windows. GitHub has changed how users authenticate when using Git for Windows, and now requires the use of a web browser to authenticate to GitHub. To be able to login via web browser, users need to update to the latest version of Git for Windows. You can download the latest version at:

If you cannot update Git for Windows to the latest version please see the following link for more information and suggested workarounds:

If you have any questions about these changes or require any assistance, please reach out to GitHub Support and we’ll be happy to assist further.

Thanks, The GitHub Team

0
votes

I tried these steps and it worked :

  1. Create a personalized access token : https://docs.github.com/en/github/authenticating-to-github/keeping-your-account-and-data-secure/creating-a-personal-access-token

  2. Add the token to Android studio (File->Settings->Version Control->Github->Add - Login with token)

  3. Goto File->Settings->Version Control->Git and uncheck 'Use Credential Helper'

0
votes

Use the following command can give you a 15 minutes to timeout.

$ git config --global credential.helper cache

You can also modify the time by the command below. This is an example for 1 hours.

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

If you would like to cache locally, use the command for an hour to timeout.

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