我最近创建了第二个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凭据存储做些什么,我用它来存储我的工作凭据?它从来没有问过我的私有帐户的密码...
4条答案
按热度按时间bnl4lu3b1#
条件包括I detail here仅用于提交作者(user.name/email)。
这与身份验证无关(凭据:用户名/密码)
它们可能缓存在**credential manager**中(如linux osx-keychain)
检查以下输出:
如果可以,请按环境使用SSH密钥,如I illustrate there:* 然后 * 您可以轻松地为同一个远程存储库维护不同的身份(github.com)
注意:与Git for Windows一起安装的GCM(Git Credential Manager)不支持每个Uri多个用户,如问题363中所述。
brvekthn2#
我只是为我的Jenkins设置了一个多凭据设置,它可能适用于您正在做的事情。
对于我们的Jenkins用户,我们将配置推送到AWS CodeCommit以备份服务器。我们还需要能够使用
mvn release
插件,该插件需要能够推送到我们的Github存储库。我们的Jenkins示例也在一个子网中,该子网阻止传出SSH,因此我们必须使用HTTPS。因此,我们需要两组证书,还需要注意的是,我们的Github组织需要MFA,所以密码实际上是个人访问令牌。
另外一点是,既然你的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
klr1opcd3#
这样做,虽然冗长的作品罚款
git config user.name 'username'
和git config user.email 'email'
设置目标存储库的凭据。jvlzgdj94#
您只能通过键入以下内容为该存储库设置用户:
git config --local user.name 'Full Name'
git config --local user.email 'your@mail.com'
这不会影响其他存储库。