57

When I do

git push

I get the command prompt like

Username for 'https://github.com':

then I enter my username manually like

Username for 'https://github.com': myusername

and then I hit Enter and I get prompt for my password

Password for 'https://myusername@github.com':

I want the username to be written automatically instead of manually having to type it all the time.

I tried doing it with xdotool but it didn't work out.

I have already done

git config --global user.name myusername
git config --global user.email myemail@gmail.com

but still it always asks for me to type manually

Braiam
  • 35,991

5 Answers5

62

In Terminal, enter the following to enable credential memory:

$ git config --global credential.helper cache

You may update the default password cache timeout (in seconds):

# This cache timeout is in seconds
$ git config --global credential.helper 'cache --timeout=3600' 

You may also use (but please use the single quotes, else double quotes may break for some characters):

$ git config --global user.name 'your user name'
$ git config --global user.password 'your password'
Jeff Schaller
  • 67,283
  • 35
  • 116
  • 255
prosti
  • 1,038
  • 3
    how to cache forever? – R. Gurung Jul 05 '20 at 17:16
  • 4
    @R.Gurung Use git config credential.helper 'store in that case, but be aware that this stores your git credentials on disk in plain-text, without any encryption whatsoever. (~/.git-credentials) – Per Lundberg Dec 08 '20 at 11:29
  • 3
    Note, the above snippet should be --global flagged as well and close its opening ' such that it reads: git config --global credential.helper 'store' – Albert Renshaw Mar 09 '21 at 01:29
  • If you want the config to be specific of a website (e.g. only for github.com, but not gitlab), you have to use git config credential.https//github.com ... instead of git config credential.helper ... – PlasmaBinturong Jan 19 '22 at 18:17
21

Actually what you did there is setting up the author information, just for the commits. You didn't store the credentials. credentials can be stored in 2 ways:

  1. using the git credential functions: https://git-scm.com/docs/git-credential-store
  2. change the origin url to "https://username:password@github.com".
  3. a third alternative is to use an ssh key (as @StephenKitt said). For github configuration, you can find all needed information in GitHub help page
Braiam
  • 35,991
  • 1
    adding username and password to origin url is not good becouse of security reasons but if you feel yourself in secure then this is best path. – kodmanyagha Mar 18 '20 at 16:38
11

Copied this from git scm

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

[your credentials are used automatically]

4

In linux (Ubuntu 18.04) the username / password can be saved in the file ~/.git-credentials, just edit the file to use your new username / password.

The file format is quiet easy to understand and manipulate, each line contains credentials for one user / domain, in the following format:

https://<username>:<password>@github.com
https://<username2>:<password2>@bitbucket.com
...
1

Try git-credential-oauth, included in many Linux distributions.

No more passwords! No more personal access tokens! No more SSH keys!

git-credential-oauth is a Git credential helper that securely authenticates to GitHub, GitLab, BitBucket and Gerrit using OAuth.

The first time you push, the helper will open a browser window to authenticate. Subsequent pushes within storage lifetime require no interaction.