如何为多个Github帐户存储钥匙串凭证?

Dyl*_*lan 8 git macos github keychain

我在OSX Mavericks上运行Git,直到现在还没有遇到过问题.改变的是我试图在同一台计算机上的不同回购中使用两个Github帐户.

问题是osx-keychain存储了我的第一个帐户的登录信息.这之前非常棒,但每当我尝试提交或推送我的新Github帐户时,默认使用钥匙串的用户名和密码值,并忽略本地定义的git配置(甚至全局git配置!)文件.

我可以删除我的osx-keychain,然后推送到新帐户,但这样做会为该帐户创建一个新的钥匙串,这使我回到原点:能够使用新的钥匙串值推送到我的辅助帐户但被锁定在我的主帐户之外.

所以我陷入了"两种情况",我真的希望有一种"两种"解决方案.有帮助吗?

PS我试过这个解决方案,它没有用,因为它osx-keychain似乎覆盖了SSH身份功能

Von*_*onC 10

如果您使用的是https url,那么您提到的解决方案将没有任何效果:它适用于多个ssh密钥.

关于https,这个问题提到了一些解决方案,包括:

  • 默认情况下,gitcredentials仅考虑域名.
    如果你想让git考虑完整路径(例如,如果你有多个GitHub帐户),请将useHttpPath变量设置为true,如下所述gitcredentials.
    请注意,更改此设置将再次针对每个URL询问您的凭据.

默认情况下,Git不认为http URL的"路径"组件值得通过外部帮助器进行匹配.
这意味着存储的凭证https://example.com/foo.git也将用于https://example.com/bar.git.
如果您确实想要区分这些情况,请将此选项设置为true.

另外,请确保您的https网址包含您的帐户名称:

git clone https://user1@github.com/auser/aprojectX
git clone https://user2@github.com/auser/aprojectY
Run Code Online (Sandbox Code Playgroud)

这将有助于凭证助手知道它应该寻找哪个帐户/密码.

最后,您用于访问git repo托管服务的身份验证与以下内容无关:

git config (--global) user.name
Run Code Online (Sandbox Code Playgroud)

最后一个配置仅用于设置与本地提交相关联的作者.
它不是用于选择用于访问远程托管网站的帐户.

  • 克隆网址中的帐户名挽救了这一天..谢谢 (2认同)