如何在Windows的Git Credential Manager中按回购在本地存储凭证?

时间:2018-09-07 11:54:52

标签: windows git

我有2个github帐户(工作和个人帐户),我想在Windows 10 (以安全方式)中存储凭据。

git config --global credential.helper manager命令仅设置单个用户名和密码,这会在我的计算机中的个人存储库和工作存储库之间发生冲突。两个回购都使用HTTPS克隆。

我想存储和访问可能基于回购用户名的不同凭证。 有可能吗?

我知道可以使用SSH,但我想知道HTTPS的方式。

4 个答案:

答案 0 :(得分:1)

通常,您可以使用credential.useHttpPath来为同一主机运行的多个存储库拆分凭证管理。 [{]

在这种情况下,请使用Git 2.27(2020年第二季度),因为凭证帮助程序的URL解析已得到纠正。

请参见commit 4c5971eJeff 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)

URL中的用户名

在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的行为。

     

支持truefalse。默认为false

git config --global credential.bitbucket.com.useHttpPath true

如果您想临时使用不同的凭据登录完全相同的存储库,则第二种方法无济于事。 (请参见GCM #363

答案 3 :(得分:-1)

不能每个主机(或URI)具有多个用户名。据我所知,SSH是目前最简单的方法,可以做您想做的事情。

有关更多信息,您可以查看VonC对与您非常相似的问题的回答。 GitHub: Separate credentials for two accounts on Windows