如果在Windows下,用户Git for Windows和管理凭据的管理器(又名Git- credential - manager -for Windows Link),问题是当使用OAuth令牌通过https推送到GitHub时,没有简单的方法在用户之间切换。
原因是令牌被存储为:
互联网地址:git:https://github.com
用户名:个人访问令牌
密码:OAuth_Token
Internet Address中的URL变量是无效的,例如:
转到:https://username@github.com
git:https://github.com/username
...
解决方案:名称空间。这可以在Git-Credential-Manager-for-Windows的配置细节中找到:
https://github.com/Microsoft/Git-Credential-Manager-for-Windows/blob/master/Docs/Configuration.md
引用其中的话:
名称空间
为存储的凭证设置名称空间。
默认情况下,GCM对所有存储的凭证使用'git'命名空间,设置这个配置值可以控制全局或每台主机使用的命名空间。
Git配置——global credentials .namespace名称
现在,在Windows凭据管理器中存储您的凭据为:
互联网地址:git.用户名:https://github.com
用户名:个人访问令牌
密码:OAuth_Token
注意我们已经改变了:git -> git。用户名(将用户名改为实际用户名或任意你想要的唯一标识符)
现在,在你想要使用特定条目的存储库中,执行:
git config credential.namespace git.username
(再次…用你想要的值替换用户名)
你的.git/config现在将包含:
[credential]
namespace = git.username
果不其然!正确的凭据将从Windows凭据存储中取出。
当然,这不会改变哪个用户/电子邮件正在推送。为此,您必须配置通常的user.name和user.email