Reputation: 49597
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.
Upvotes: 895
Views: 757822
Reputation: 904
As of August 13, 2021 password-based logins are no longer accepted. You are now required to use token/SSH-based authentication.
If you don't want to be asked every time you push, there are two methods:
First install GitHub CLI, and then to cache your credentials:
git config --global credential.helper store
gh auth login
And follow the prompts. But make sure you check Authenticate Git with your GitHub credentials?
with Y
.
This method uses public SSH key, you need to either copy an existing public key or generate a new one.
ls ~/.ssh/*.pub
. The output will be similar to the below:/home/username/.ssh/id_rsa.pub
cat ~/.ssh/id_rsa | xclip -selection clipboard
Settings
-> SSH and GPG keys
-> New SSH key
. Paste the key in the Key
body, title
can be anything then click Add SSH Key
. Now you should be all set.In case you don't have a ssh
key:
Generate a new key by ssh-keygen -t ed25519 -C "your_email@example.com"
Follow the prompt, its recommended to use a passphrase for extra security.
Continue from step #2 of method 2.
Upvotes: 8
Reputation: 13952
Use personal access tokens not password:
Please note that, Beginning August 13, 2021, github will no longer accept account passwords when authenticating Git operations and will require the use of token-based authentication for all authenticated Git operations on GitHub.com. You may also continue using SSH keys where you prefer.
So for, static configuration of usernames for a given authentication context you have to use (when using github):
https://username:<personal-access-tokens>@repository-url.com
For example, to push to https://github.com/blueray453/window-application-calls , you have to run:
git push https://blueray453:<personal-access-token>@github.com/blueray453/window-application-calls
Please note that, we are using <personal-access-tokens>
and not <password>
For further details on how to create a personal access token, please check the documentation. In summary, what the documentation says is, you have to go to https://github.com/settings/tokens and click on Generate new token (classic)
, there select public_repo
for public repositories, or repo
for private repositories. Then use that key as password.
Why only following three solutions:
github documentation says:
GitHub over HTTPS... Every time you use Git to authenticate with GitHub, you'll be prompted to enter your credentials to authenticate with GitHub, unless you cache them with a credential helper.
...
Using SSH ... Every time you use Git to authenticate with GitHub, you'll be prompted to enter your SSH key passphrase, unless you've stored the key.
github recommends Connecting over HTTPS. Probably because they want you to use Git Credential Manager. I have not used it, so will leave it for someone who has experience with it.
Here, I will only give Git and SSH solutions. Git's documentation discuss how to avoid inputting the same credentials over and over using gitcredentials.
Solution 1
Use credential helpers to cache password (in memory for a short period of time).
git config --global credential.helper cache
now run:
git push https://username:<personal-access-tokens>@repository-url.com
afterwards, only running git push
will be enough.
Solution 2
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.
now run:
git push https://username:<personal-access-tokens>@repository-url.com
afterwards, only running git push
will be enough.
In this case the content of ~/.my-credentials
will look like:
https://username:<personal-access-tokens>@repository-url.com
NOTE:
To address the concern that gitcredentials store the credentials completely unencrypted ("as is"), You can always encrypt the file and decrypt it before using.
Solution 3
This is almost a direct copy paste from Generating a new SSH key and adding it to the ssh-agent.
Create the ssh key using ssh-keygen -t ed25519 -C "your_email@example.com"
. If you are using a legacy system that doesn't support the Ed25519 algorithm, use: ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
Add the SSH key to your account on GitHub. After you generate an SSH key pair, you must add the public key to https://github.com/settings/ssh/new
If not started, start the ssh-agent in the background using $ eval "$(ssh-agent -s)"
Add your SSH private key to the ssh-agent using $ ssh-add ~/.ssh/id_ed25519
. If you created your key with a different name, or if you are adding an existing key that has a different name, replace id_ed25519 in the command with the name of your private key file.
Test the SSH key: ssh -T git@github.com
Change directory into the local clone of your repository (if you're not already there) and run: git remote set-url origin git@github.com:username/your-repository.git
. Now, git push
hopefully will work.
Upvotes: 8
Reputation: 992
git config credential.helper store
git push https://github.com/xxx.git
Then enter your username and password.
Done
Upvotes: 8
Reputation: 711
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:password@repository-url.com
Upvotes: 42
Reputation: 770
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>
Upvotes: 14
Reputation: 13038
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
Upvotes: 1228
Reputation: 1544
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'
Upvotes: 2
Reputation: 435
.git-credentials
files from the folder C:\Users\{username}
.Upvotes: 1
Reputation: 4170
I tried these steps and it worked :
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
Add the token to Android studio (File->Settings->Version Control->Github->Add - Login with token)
Goto File->Settings->Version Control->Git and uncheck 'Use Credential Helper'
Upvotes: 0
Reputation: 1647
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
Upvotes: 3
Reputation: 145
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 git@github.com:username/reponame.git
.
Check this article. https://www.freecodecamp.org/news/how-to-fix-git-always-asking-for-user-credentials/
Upvotes: 5
Reputation: 3444
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
Upvotes: 0
Reputation: 541
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
Upvotes: 3
Reputation: 31
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.
Upvotes: 1
Reputation: 688
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.
Upvotes: 1
Reputation: 71
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.
Upvotes: 3
Reputation: 6836
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://git@github.com/.insteadOf https://github.com/
url.<base>.insteadOf
is documented here.
Upvotes: 5
Reputation: 249
Changing the cloned repo works:
git remote set-url origin git@github.com: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).
Upvotes: 22
Reputation: 500
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.
Upvotes: 5
Reputation: 702
You can just run
git config --global credential.helper wincred
after installing and logging into GIT for windows in your system.
Upvotes: 4
Reputation: 1369
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
Upvotes: 11
Reputation: 27614
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://USERNAME@github.com': <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
Upvotes: 152
Reputation: 2224
When I only git pull, git pull origin xxx, git asks for both username & password.
git config credential.helper store
it works.
Upvotes: 10
Reputation: 6358
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
Upvotes: 75
Reputation: 6503
To avoid entering username, but still be prompted to enter a password, then you can simply clone your repository including the username:
git clone user_name@example.gitrepo.com/my_repo.git
Upvotes: 5
Reputation: 2865
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
Upvotes: 7
Reputation: 15482
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 git@github.com:
in remote URL:
$ git config remote.origin.url
https://github.com/dir/repo.git
$ git config remote.origin.url "git@github.com:dir/repo.git"
Upvotes: 169
Reputation:
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://username@repository-url.com
Upvotes: 236
Reputation: 1791
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")
Upvotes: 28