我想在 Git Extensions、Sourcetree 或其他 Git GUI 中自动使用 push 和 pull,无需每次手动输入用户名和密码。
那么我该如何保存我的 Git 凭据呢?
我想在 Git Extensions、Sourcetree 或其他 Git GUI 中自动使用 push 和 pull,无需每次手动输入用户名和密码。
那么我该如何保存我的 Git 凭据呢?
$ git config --global credential.helper osxkeychain
此外,正如我在下面的编辑中所写的那样,请确保禁用其他凭据助手,以便git不会保存您的密码,例如明文。
然后,您可以克隆git存储库:
$ git clone https://git.overleaf.com/blahblah
这会要求输入密码。输入后,您可以在macOS内置的KeyChain访问应用程序中看到它。
在这种情况下,您可以找到名称为git.overleaf.com
的URL条目,该条目与git URL匹配。
为了更好的安全性,您可以要求所有应用程序请求您的权限。您可以从“始终允许这些应用程序访问”的列表中删除git,以便即使是git也无法在未经您允许的情况下获取密码。
注意:
但我注意到一些应用程序仍然可以在没有我的许可下进行 git pull,这很奇怪,因为在这种情况下,Overleaf 的 git 存储库只提供 https 访问(即没有通过 SSH 的漏洞)。如果我更改密码,我可以暂时阻止这些应用程序进行 pull,但是在我重新注册新密码后,这些应用程序又可以再次进行 pull... 即使我勾选了“要求 Keychain 密码”。可能是 macOS(Ventura)中的错误配置或甚至是 bug。
我在 AskDifferent 上开了一个 Q&A: https://apple.stackexchange.com/questions/459108/keychain-access-loophole-for-git-https
编辑:
我找到了问题所在。Git 仍然具有将凭据存储在全局设置(~/.git-config
)中的配置。因此,您需要确保对不同分辨率进行正确的设置。这包括每个项目、全局 (git config edit --system
) 和系统 (git config edit --system
) 应仅将 [credential]
设置为 helper=osxkeychain
。
在编辑设置后,检查 ~/.git-credentials
并确保没有意外存储密码(以明文形式)。
对于遇到相同问题的GitLab用户-
您可以设置部署令牌以从您的存储库克隆或拉取(使用部署令牌无法将代码推送到存储库)。
在这里,您可以了解有关GitLab部署令牌的更多信息: https://docs.gitlab.com/ee/user/project/deploy_tokens/index.html
创建部署令牌后,请使用以下命令来克隆存储库:
git clone https://${username}:${deploy_token}@gitlab.com/yourusername/yourreponame.git
我认为这种方法比全局保存git用户名和git密码更好(例如,在远程共享机器上可能不安全)
~/.git-credentials
,然后添加以下行:git:https://<user>:<token/password>@gitlab.com
就是这样