I recently created a second GitHub account two separate my work and my private projects (before, I only had the work account).
I use https in combination with the Windows credential storage. To automatically select the correct account, I store my private account info in ~/.gitconfig
and the work account info in ~/work/.gitconfig
as suggested here.
Unfortunately, when I try to push changes in my private repositories, I get the following error:
$ git push
remote: Permission to privateuser/privaterepo.git denied to workuser.
fatal: unable to access 'https://privateuser@github.com/privateuser/privaterepo.git/': The requested URL returned error: 403
I set the remote URL to git remote set-url origin https://privateuser@github.com/privateuser/privaterepo.git
like suggested here.
Pushing in my work repos still works fine.
And when I type git config user.name
in my private/work repos, I get my private/work username, respectively - as it should be.
What's the problem with the new private repositories? Why does git still think I'm workuser
, when I try to push to my private repos? Does it have to do something with the Windows Credential storage, which I used to store my work credentials? It never asked for the password of my private account...
The conditional include that I detail here is only for commit authorship (user.name/email).
This has nothing to do with authentication (credentials: username/password)
Those are probably cached in a credential manager (like the linux osx-keychain)
Check the output of:
git config credential.helper
If you can, use instead SSH keys per environment, as I illustrate there: then you can easily maintain different identities for the same remote repo (github.com)
Note: the GCM (Git Credential Manager) installed alongside Git for Windows does not, as stated in issue 363, support multiple users per Uri.
GCM 2.2.0 (July 2023) adds login
, logout
and list
commands for the GitHub provider, as well as UI and TTY prompts to select between GitHub user account.