114

I've followed the GitHub instructions for setting up my account, and I'm able to clone, but I'm unable to push remotely.

When I do a "git push" I get the 403 error. It has the correct URL. I tried a "git credential-osxkeychain get" to see what it was giving, and this prints out the wrong credentials.

I believe what happened is the first time it asked for the credentials, I thought it was another application asking, and it put the wrong ones in.

I just need to reset it so that it uses the correct keychain item for my GitHub account.

I've tried:

git credential-osxkeychain erase
git credential-osxkeychain set

The program never gives any prompts. Set will say "bad input" if I don't do the right thing. I tried putting in "password=password", etc., but then when I do a "get" I still get the old ones.

I can't figure out where these are being stored, as they are not in .gitconfigure. Further there are no recent keychain items that could be it. (I have several GitHub accounts in my keychain and it is not using any of them.)

Peter Mortensen
  • 28,342
  • 21
  • 95
  • 123
nirvana
  • 3,541
  • 4
  • 22
  • 29

9 Answers9

147

From Terminal: (You need to enter the following three lines)

 $ git credential-osxkeychain erase ⏎
 host=github.com  ⏎
 protocol=https   ⏎
 ⏎
 ⏎

NOTE: after you enter “protocol=https” above you need to press ~~RETURN~~ TWICE (Each '⏎' is equivalent to a 'press enter/return' )

Ashutosh Jindal
  • 17,227
  • 4
  • 58
  • 85
maz
  • 6,926
  • 4
  • 22
  • 25
  • 4
    For some reason I couldn't find any Git/GitHub credentials within the Keychain app, but this worked. Thanks! – Donald Mar 22 '16 at 15:35
  • 5
    Since this wasn’t clear to me: you have to enter all 3 lines above, and then press return again – i.e. lines 2/3 above are not output from the command, but input. – Frederik Mar 13 '18 at 11:45
  • This answer helped me. Thank you very much! – Ken Flake Oct 08 '19 at 00:39
78

I'm not sure how to erase through the command line, but it's fairly easily to do it through the Keychain Access app. Just go to Applications -> Utilties -> Keychain Access, then enter "github.com". You can either delete the invalid item or update the password from with the app.

benzado
  • 74,658
  • 20
  • 105
  • 133
30

The solution turned out to be this:

The command git credential-osxkeychain was using the first GitHub account entry in my keychain. This one was not the one that had access to the projects in question.

I resolved the problem by touching the account in Keychain Access so that its date changed (I think I just changed the comment) and now that it became the most recent GitHub account it became the first one returned to credential-osxkeychain, and thus everything worked.

A better form of support for multiple GitHub accounts would be nice, but it is likely that most people only have one primary account and don't run into this problem.

Daniel Serodio
  • 3,711
  • 5
  • 36
  • 32
nirvana
  • 3,541
  • 4
  • 22
  • 29
  • 2
    I'm not sure how this works for multiple users on the same host, but you might check out ssh and using a `~/.ssh/config` file instead of using OSX Keychain. This is used in cases where you may have multiple ssh keys for different hosts(and thinking accounts as well). http://nerderati.com/2011/03/17/simplify-your-life-with-an-ssh-config-file/ – jusopi Mar 03 '15 at 13:51
10

git-credential-osxkeychain stores passwords in the Apple Keychain, as noted above.

By default, gitcredentials only considers the domain name. If you want Git to consider the full path (e.g. if you have multiple GitHub accounts), set the useHttpPath variable to true, as described at http://git-scm.com/docs/gitcredentials.html. Note that changing this setting will ask your credentials again for each URL.

Peter Mortensen
  • 28,342
  • 21
  • 95
  • 123
MacFreek
  • 2,497
  • 27
  • 33
8

On Mac, use the command git credential-osxkeychain erase.

OR remove manually from keychain from ApplicationsUtilitiesKeychain Access. Then remove the github.com keychain. Then use push; it will ask for the keychain access; then deny.

It will ask for the new username and password, add it then pushes a file for that.

After git push I found this error. Then I use the upper case- issue:

remote: Permission to user1/file.git denied to user2(previously exist user ). fatal: unable to access 'https://github.com/xxxxxxxxxxxx/': The requested URL returned error: 403

Peter Mortensen
  • 28,342
  • 21
  • 95
  • 123
Amit kumar
  • 339
  • 4
  • 12
5

Try running /Applications/Utilities/Keychain Access.

Peter Mortensen
  • 28,342
  • 21
  • 95
  • 123
echristopherson
  • 6,556
  • 2
  • 19
  • 31
5

GitHub help page for this issue: https://help.github.com/articles/updating-credentials-from-the-osx-keychain/

gorjanz
  • 1,683
  • 1
  • 15
  • 13
4

Try this in your command line.

git config --local credential.helper ""

It works for me every time when I have multiple GitHub accounts in OSX keychain

invinciblemuffi
  • 321
  • 1
  • 3
  • 15
  • 1
    This may not be the accepted answer basing on the question's title but it's definitely useful in the context that the questioner was trying to achieve. If your password has changed and git "remembers" the old one, simply run this command and try again. Thanks invinciblemuffi. – tuan.dinh May 19 '21 at 02:19
0

You can delete existing credentials and add new ones via "Keychain Access"

Image

Ref. https://docs.github.com/en/github/getting-started-with-github/updating-credentials-from-the-macos-keychain

Satheez
  • 351
  • 2
  • 8