GitHub:Windows 上两个帐户的单独凭据
Posted
技术标签:
【中文标题】GitHub:Windows 上两个帐户的单独凭据【英文标题】:GitHub: Separate credentials for two accounts on Windows 【发布时间】:2018-07-03 09:00:43 【问题描述】:我最近创建了第二个 GitHub 帐户,将我的工作和私人项目分开(之前,我只有工作帐户)。
我将 https 与 Windows 凭据存储结合使用。为了自动选择正确的帐户,我将我的私人帐户信息存储在 ~/.gitconfig
中,并将工作帐户信息存储在 ~/work/.gitconfig
中,如建议的 here。
不幸的是,当我尝试在我的私有存储库中推送更改时,我收到以下错误:
$ 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
我将远程 URL 设置为 git remote set-url origin https://privateuser@github.com/privateuser/privaterepo.git
,就像建议的 here 一样。
推入我的工作回购仍然可以正常工作。
当我在我的私人/工作存储库中输入git config user.name
时,我会分别得到我的私人/工作用户名 - 应该是这样。
新的私有仓库有什么问题?当我尝试推送到我的私人仓库时,为什么 git 仍然认为我是 workuser
?它是否与我用来存储工作凭据的 Windows 凭据存储有关?它从来没有要求我的私人帐户的密码...
【问题讨论】:
如何使用git config credential.authority Basic
或git config credential.useHttpPath true
【参考方案1】:
条件包括 I detail here 仅用于提交作者身份(用户名/电子邮件)。
这与身份验证无关(凭据:用户名/密码)
这些可能缓存在 credential manager 中(如 linux osx-keychain) 检查输出:
git config credential.helper
如果可以,请在每个环境中使用 SSH 密钥,因为我 illustrate there:那么您可以轻松地为同一个远程仓库 (github.com) 维护不同的身份
注意:与Git for Windows 一起安装的 GCM (Git Credential Manager) 不支持 as stated in issue 363,每个 Uri 支持多个用户。
【讨论】:
是的,Windows 凭据管理器存储 GitHub 凭据,但似乎只能处理一个帐户的凭据。我尝试手动编辑和添加凭据不起作用。我现在正在使用 ssh 使用您的答案,即使设置它和调整所有本地存储库的远程 URL 需要一些开销。因此,如果还有其他更简单的答案,我们仍然欢迎。 @CGFoX 是的,我已经完成了指向所使用的确切管理器的答案,事实上它还不支持每个 URI 多个用户。 由于似乎没有使用 https 的正确答案并且您的 ssh 解决方案相当简单,因此您将获得赏金;)【参考方案2】:我刚刚为我的 Jenkins 设置了一个多凭据设置,它可能适用于您正在做的事情。
对于我们的 Jenkins 用户,我们将我们的配置推送到 AWS CodeCommit 以备份服务器。我们还需要能够使用 mvn release
插件,这需要能够推送到我们的 Github 存储库。我们的 jenkins 实例也在阻止传出 SSH 的子网中,因此我们必须使用 HTTPS。
因此,我们需要两组凭据。还要注意的是,我们的 Github 组织需要 MFA,所以密码实际上是个人访问令牌。
# /var/lib/jenkins/.gitconfig
[user]
name = Jenkins
email = jenkins@domain.io
[credential]
helper = !aws --profile default codecommit credential-helper $@
UseHttpPath = true
[credential "https://github.com"]
helper = store
# /var/lib/jenkins/.git-credentials
https://username:password@github.com/SomeOrg/some-repo
另外一点是,由于您的存储库/组织似乎都在 Github 上,以下是 git 文档中可能适用于您的一些附加点:
useHttpPath
- 默认情况下,Git 不认为 http URL 的“路径”组件值得通过外部助手进行匹配。这意味着为https://example.com/foo.git 存储的凭据也将用于https://example.com/bar.git。如果您确实想区分这些情况,请将此选项设置为 true。
https://git-scm.com/docs/gitcredentials
【讨论】:
【参考方案3】:您只能通过键入以下内容为该存储库设置用户:
git config --local user.name 'Full Name'
git config --local user.email 'your@mail.com'
这不会影响您的其他存储库。
【讨论】:
不,用户名/电子邮件设置与身份验证无关。以上是关于GitHub:Windows 上两个帐户的单独凭据的主要内容,如果未能解决你的问题,请参考以下文章
如何在没有 Windows 凭据管理器的情况下更改我的 git 帐户凭据
如何通过 Windows Git 凭据管理器使用多个 Git 帐户