[linux] Git asks for username every time I push

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.

This question is related to linux git github

The answer is


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.


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")


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


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).


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"

git config --global credential.helper cache

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


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.


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


You can just run

git config --global credential.helper wincred

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


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. $ git config credential.helper store

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

  3. Then enter your user name and password.

  4. Done

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.


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]

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

(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.


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.


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>

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/


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

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

git config credential.helper store

it works.


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

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

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]

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


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.


Examples related to linux

grep's at sign caught as whitespace How to prevent Google Colab from disconnecting? "E: Unable to locate package python-pip" on Ubuntu 18.04 How to upgrade Python version to 3.7? Install Qt on Ubuntu Get first line of a shell command's output Cannot connect to the Docker daemon at unix:/var/run/docker.sock. Is the docker daemon running? Run bash command on jenkins pipeline How to uninstall an older PHP version from centOS7 How to update-alternatives to Python 3 without breaking apt?

Examples related to git

Does the target directory for a git clone have to match the repo name? Git fatal: protocol 'https' is not supported Git is not working after macOS Update (xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools) git clone: Authentication failed for <URL> destination path already exists and is not an empty directory SSL_connect: SSL_ERROR_SYSCALL in connection to github.com:443 GitLab remote: HTTP Basic: Access denied and fatal Authentication How can I switch to another branch in git? VS 2017 Git Local Commit DB.lock error on every commit How to remove an unpushed outgoing commit in Visual Studio?

Examples related to github

Does the target directory for a git clone have to match the repo name? Issue in installing php7.2-mcrypt How can I switch to another branch in git? How to draw checkbox or tick mark in GitHub Markdown table? How to add a new project to Github using VS Code git clone error: RPC failed; curl 56 OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 10054 How to add empty spaces into MD markdown readme on GitHub? key_load_public: invalid format git - remote add origin vs remote set-url origin Cloning specific branch