我有2个github帐户(工作和个人帐户),我想在Windows 10 (以安全方式)中存储凭据。
git config --global credential.helper manager
命令仅设置单个用户名和密码,这会在我的计算机中的个人存储库和工作存储库之间发生冲突。两个回购都使用HTTPS克隆。
我想存储和访问可能基于回购用户名的不同凭证。 有可能吗?
我知道可以使用SSH,但我想知道HTTPS的方式。
答案 0 :(得分:1)
通常,您可以使用
credential.useHttpPath
来为同一主机运行的多个存储库拆分凭证管理。 [{‡]
在这种情况下,请使用Git 2.27(2020年第二季度),因为凭证帮助程序的URL解析已得到纠正。
请参见commit 4c5971e的Jeff King (peff
)(2020年4月14日)。
(由Junio C Hamano -- gitster
--在commit a397e9c中合并,2020年4月22日)
credential
:将URL中的“?
”和“#
”视为主机的结尾签名人:杰夫·金
看到不寻常:
https://example.com?query-parameters
中间没有斜杠,例如:
https://example.com/some-path?query-parameters
甚至:
https://example.com/?query-parameters
但是根据RFC 3986,它是主机名(实际上是“授权组件”)的有效结尾。对于“
#
”也是如此。然后
curl
将根据标准解析URL,这意味着它将与example.com
联系,但是我们的凭证代码将询问其中带有“?
”的虚假主机名。让我们确保遵循该标准,更重要的是,询问与
curl
将与之交谈的主机。如果我们可以要求curl为我们解析网址,那将是很好的选择。
但是直到7.62,它才增长了URL解析API,因此我们都将使用后备代码。
另外,我们需要在主要的Git二进制文件中使用此代码,在该二进制文件中,我们试图避免对libcurl
具有链接依赖性。但是至少要修复我们的解析器。移至
curl
的解析器可以防止其他潜在的差异,但这可以使我们立即缓解已知问题,并且如果最终使用curl
可以帮助我们的后备代码。
答案 1 :(得分:0)
您可以使用其他助手来完成此操作,例如git-credential-store,它为凭证文件路径使用可选参数。您可以在每个存储库的本地配置中对此进行设置,并为每个存储库使用不同的凭据文件。
或者使用@phd注释中的链接中的建议,该建议应适用于Windows的Git Credential Manager。
答案 2 :(得分:0)
在Bitbucket上,您可以将用户名添加到遥控器的HTTPS网址:
https://JerryGoyal@bitbucket.org/path/repo.git
https://bitbucket.org/path/repo.git
我不知道GitHub是否支持相同的功能,但是GCM #749建议它起作用。
useHttpPath
更普遍地,您可以使用credential.useHttpPath
来为同一主机运行的多个存储库拆分凭证管理。以下引言包括用于在bitbucket.com
上进行设置的CLI,但是您可以根据自己的需要进行修改。
useHttpPath
指示Git将远程URL的路径部分提供给凭证帮助者。提供路径后,GCM在读取和/或写入凭据时将使用主机名+路径作为密钥。
注意:此选项更改Git的行为。
支持
true
或false
。默认为false
。git config --global credential.bitbucket.com.useHttpPath true
如果您想临时使用不同的凭据登录完全相同的存储库,则第二种方法无济于事。 (请参见GCM #363)
答案 3 :(得分:-1)
您不能每个主机(或URI)具有多个用户名。据我所知,SSH是目前最简单的方法,可以做您想做的事情。
有关更多信息,您可以查看VonC对与您非常相似的问题的回答。 GitHub: Separate credentials for two accounts on Windows