我知道这样做有点痛苦,但我有多个账户,包括我的个人账户和工作账户。我为这些帐户生成令牌,因此它们的访问受到限制,我不必使用我的实际密码,因此更安全。我遇到的问题是,似乎没有一个很好的方法来存储多个帐户的这些密码。这适用于Windows和Linux。我发现的“最简单”的方法就是在系统上有多个用户帐户,这并不方便。否则,如果你有一个仓库,你尝试使用git config user.name
等设置用户,它将使用错误的密码/帐户,无论如何该仓库。
有没有更简单或更好的方法来解决这个问题?要为git保存多个密码,并且能够选择要用于存储库的帐户并使其正常工作?
2条答案
按热度按时间erhoui1w1#
人们解决这个问题的最常见方法是:
git config --global credential.useHttpPath true
-并且在每个存储库的凭证存储中具有不同的用户/通行证记录。但是如果你有大量的回购,这会很快污染凭证存储,使它不是一个很好的解决方案。你最终会得到这样的记录:
我更喜欢使用credential.namespace git config选项来解决这个问题。想法是为不同的帐户创建不同的名称空间,这样它们就不会在系统凭据管理器中冲突。
例如(使用github.com作为示例url),您可以决定其中一个帐户是您的主帐户,并在全局git config中设置它:
然后输入repo,您希望使用不同的凭据登录并在本地进行设置:
您可以在凭据管理器中验证,您应该有两个新记录:
你可以在命令提示符中验证哪些凭证将被发送到git服务器:
z9gpfhce2#
您可以考虑使用凭据助手,如最近(2020年7月)的GCM Core,announced by GitHub。
Git Credential Manager Core(GCM Core)是一个基于.NET Core构建的安全Git凭据助手,可在Windows和macOS上运行。
Linux的支持已经计划好了,但还没有安排。
对于Linux,您可以使用Java GCM。
(see最后一节)
在这两种情况下,用法是相同的:您可以缓存给定URL的凭据(如令牌)。
更新9月2020年(2个月后)Linux:
microsoft/Git-Credential-Manager-Core
issue 135提到,来自GitHubber Matthew John Cheetham:我们有一个支持Linux的pre-release of a GCM Core!🥳
目前我们提供了一个Debian软件包和一个
git-credential-manager-core
单二进制文件的tarball。.deb
目前未签名,除了GitHub之外,没有上传到任何地方。我们正在设置软件包签名,并将其发布到官方Microsoft提要(因此您将能够使用
apt-get
!).目前,预构建的二进制文件仅为64位英特尔处理器提供。
查看更多Credential stores on Linux
Git Credential Manager Core(GCM Core)在Linux平台上管理的凭据存储目前有三种选项:
2021年8月更新:issue 135现已由Matthew John Cheetham(GitHub员工)关闭:
解决此问题,因为GCM Core现在可以在Linux发行版上运行。
如需了解更多问题/错误,或支持更多发行版,请打开新问题。谢谢!