GitHub:Windows上两个帐户的独立凭据

o75abkj4  于 2023-02-14  发布在  Git
关注(0)|答案(4)|浏览(232)

我最近创建了第二个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一样。推入我的工作repos仍然工作正常。当我在我的私有/工作repos中键入git config user.name时,我分别得到了我的私有/工作用户名--这是应该的。
新的私有仓库有什么问题吗?为什么当我尝试推送到我的私有仓库时,git仍然认为我是workuser?它是否需要对Windows凭据存储做些什么,我用它来存储我的工作凭据?它从来没有问过我的私有帐户的密码...

bnl4lu3b

bnl4lu3b1#

条件包括I detail here仅用于提交作者(user.name/email)。
这与身份验证无关(凭据:用户名/密码)
它们可能缓存在**credential manager**中(如linux osx-keychain
检查以下输出:

git config credential.helper

如果可以,请按环境使用SSH密钥,如I illustrate there:* 然后 * 您可以轻松地为同一个远程存储库维护不同的身份(github.com)
注意:与Git for Windows一起安装的GCM(Git Credential Manager)不支持每个Uri多个用户,如问题363中所述。

brvekthn

brvekthn2#

我只是为我的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

另外一点是,既然你的repos/组织都在Github上,这里有一些git文档中的补充点可能对你有用:
useHttpPath-默认情况下,Git不认为http URL的“path”部分值得通过外部帮助器匹配。这意味着为https://example.com/foo.git存储的凭据也将用于https://example.com/bar.git。如果您不想区分这些情况,请将此选项设置为true。
https://git-scm.com/docs/gitcredentials

klr1opcd

klr1opcd3#

这样做,虽然冗长的作品罚款

  • 从github.comWindows凭据中删除www.example.com凭据(在PC上搜索Windows凭据)。
  • 在工作目录中使用git config user.name 'username'git config user.email 'email'设置目标存储库的凭据。
  • 大多数时候,你必须确保你已经从不需要的仓库中注销,并登录到目标账户,因为在推送过程中,你会被提示登录,通常使用当前登录的git账户的凭据。
  • 现在推!考虑到前面的一点
jvlzgdj9

jvlzgdj94#

您只能通过键入以下内容为该存储库设置用户:
git config --local user.name 'Full Name'
git config --local user.email 'your@mail.com'
这不会影响其他存储库。

相关问题