我使用Git已经有一段时间了,但不断的密码请求开始让我感到很烦。

我使用的是Mac OS X和GitHub,我按照GitHub的设置Git页面的指示设置Git和SSH密钥。

我还将github SSH密钥添加到了我的Mac OS X密钥链中,正如github的SSH密钥密码页面中提到的那样。我的公钥已在Git中注册。

然而,每次我尝试Git拉时,我都必须输入用户名和密码。除了SSH密钥之外,我是否需要为此设置其他东西?


当前回答

如果每次尝试与GitHub交互时,Git都会提示您输入用户名和密码,那么您可能使用的是存储库的HTTPS克隆URL。

使用HTTPS远程URL有一些优点:它比SSH更容易设置,并且通常通过严格的防火墙和代理进行工作。然而,它也会在您每次拉动或推送存储库时提示您输入GitHub凭据。

您可以配置Git为您存储密码。对于Windows:

git config --global credential.helper wincred

其他回答

使用此命令:用适当的主机名替换github.com

git remote set-url origin git@github.com:user/repo.git

Microsoft Stack解决方案(Windows和Azure DevOps)

首先打开.git/config文件,确保地址如下:

protocol://something@url

例如,Azure DevOps的.git/config:

[remote "origin"]
    url = https://mystore@dev.azure.com/mystore/myproject/
    fetch = +refs/heads/*:refs/remotes/origin/*

如果问题仍然存在,请打开Windows凭据管理器,单击名为Windows凭据的安全框并删除所有与git相关的凭据。

下次登录git时,它不会再消失。

orkoden关于在终端中使用带有Git的密钥链的回答不完整,并引发了错误。这是您必须执行的操作,以保存在钥匙链中的终端中输入的用户名和密码:

curl http://github-media-downloads.s3.amazonaws.com/osx/git-credential-osxkeychain -o git-credential-osxkeychain
sudo mv git-credential-osxkeychain /usr/local/bin
sudo chmod u+x /usr/local/bin/git-credential-osxkeychain

然后输入

git config --global credential.helper osxkeychain

如果你已经在curl之前完成了Git配置的部分,那没问题;它会奏效的。

在Windows for Git 1.7.9+中,在命令提示符下运行以下命令以在文本编辑器中打开配置文件:

git config --global --edit

然后在文件中,添加以下块(如果不存在)或相应地进行编辑:

[credential "https://giturl.com"]
username = <user id>
helper = wincred

保存并关闭文件。在上述更改后,您只需提供一次凭据。

如果设置了SSH代理,还可以将其添加到~/.gitconfig中,以强制git对所有GitHub repo使用SSH,而不是HTTPS:

[url "ssh://git@github.com/"]
    insteadOf = git://github.com/
    insteadOf = https://github.com/

(如果你主要使用公共回购,你也可以使用pushInsteadOf而不是insteadOf,因为从公共回购中读取可以在没有身份验证的情况下完成)。