我有2个github帐户,新旧.当我检查新的回购时,我不能提交它,因为它说我的旧github用户未被授权.
让我说我的旧github帐户用户名是旧的,电子邮件是old@old.com 让我说我的新github帐户用户名是新的,电子邮件是new@new.com
旧的github帐户没有与之关联的SSH密钥.新帐户有我的ssh密钥.当我使用Windows时,ssh键是一个噩梦,因为putty/pagent使用ppk格式,但gitbash使用的openssh使用rsa.前段时间,我设法将我的ppk转换为rsa并将其放入我的windows用户.ssh dir.
我这样做了:
$ git config --global user.name new
$ git config --global user.email new@new.com
Run Code Online (Sandbox Code Playgroud)
如果我这样做:
$ git config --global -l
Run Code Online (Sandbox Code Playgroud)
要么
$ git config -l
Run Code Online (Sandbox Code Playgroud)
我知道了:
user.email=new@new.com
user.name=new
Run Code Online (Sandbox Code Playgroud)
当我尝试做的时候 $git push origin
remote: Permission to new/test.git denied to old.
fatal: unable to access 'https://github.com/new/test.git/':
403 user old not authorised
Run Code Online (Sandbox Code Playgroud)
如果我使用gitbash,tortoise或VS代码来执行推送,我会收到此错误.
如果我删除克隆的repo,并从头再次克隆它,然后提交任何东西,同样的问题.
$ git clone git@github.com:new/test.git
Run Code Online (Sandbox Code Playgroud)
知道为什么以及在哪里获得旧用户?在我的机器上的任何地方都没有引用旧的github用户,它阻止我做任何工作.
似乎没有办法从github删除旧用户,但即使我可以,它仍然无法解决问题.我几个月都无法工作,因为我无法向github提交任何内容.
我尝试的另一件事是在克隆repo后编辑.git/config.我尝试将https更改为ssh url,因为https在使用github的所有年份中从未为我工作过.https允许您克隆,但永远不会推送.如果我用ssh签出,使用适量的vodoo,它曾经工作,但现在它总是得到老用户没有明显的原因.
无法访问" https://github.com/new/test.git/ ":
这意味着:不涉及SSH.完全没有.
而user.name/user.email也与身份验证无关.
由于您使用的是https,Git将使用它为github.com找到的第一个缓存凭据.
例如,
检查git config credential.helper
On窗口的返回值,它将是Windows凭据管理器.
您至少应该在URL中指定新的GitHub帐户:
cd /path/to/your/local/repo
git remote set-url origin https://<newGitHubAccount>@github.com/newGitHubAccount/test.git
Run Code Online (Sandbox Code Playgroud)
然后Git push应该触发弹出窗口,询问您新的GitHub帐户密码.
如果需要,您还可以切换回SSH.
您可以像我在这里描述的那样管理多个SSH密钥.