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 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
$ git config credential.helper store
$ git push/push https://github.com/xxx.git
Then enter your user name and password.
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
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
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).
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.
Source: Stackoverflow.com