我使用Git已经有一段时间了,但不断的密码请求开始让我感到很烦。
我使用的是Mac OS X和GitHub,我按照GitHub的设置Git页面的指示设置Git和SSH密钥。
我还将github SSH密钥添加到了我的Mac OS X密钥链中,正如github的SSH密钥密码页面中提到的那样。我的公钥已在Git中注册。
然而,每次我尝试Git拉时,我都必须输入用户名和密码。除了SSH密钥之外,我是否需要为此设置其他东西?
我使用Git已经有一段时间了,但不断的密码请求开始让我感到很烦。
我使用的是Mac OS X和GitHub,我按照GitHub的设置Git页面的指示设置Git和SSH密钥。
我还将github SSH密钥添加到了我的Mac OS X密钥链中,正如github的SSH密钥密码页面中提到的那样。我的公钥已在Git中注册。
然而,每次我尝试Git拉时,我都必须输入用户名和密码。除了SSH密钥之外,我是否需要为此设置其他东西?
当前回答
我认为您可能有错误的Git存储库URL。
打开.git/config并找到[remote“origin”]部分。确保您使用的是SSH:
ssh://git@github.com/username/repo.git
如果单击克隆或下载并选择SSH,您可以在存储库的主页面中看到SSH URL。
而不是https或git:
https://github.com/username/repo.git
git://github.com/username/repo.git
现在,您可以只使用SSH密钥而不是用户名和密码进行验证。
如果Git抱怨已经添加了'origin',请打开.config文件,将[remote origin]后面的url=“…”部分编辑为url=ssh://github/username/repo.git
其他服务也是如此。确保地址如下:protocol://something@网址
例如,Azure DevOps的.git/config:
[remote "origin"]
url = https://mystore@dev.azure.com/mystore/myproject/
fetch = +refs/heads/*:refs/remotes/origin/*
其他回答
如果每次尝试与GitHub交互时,Git都会提示您输入用户名和密码,那么您可能使用的是存储库的HTTPS克隆URL。
使用HTTPS远程URL有一些优点:它比SSH更容易设置,并且通常通过严格的防火墙和代理进行工作。然而,它也会在您每次拉动或推送存储库时提示您输入GitHub凭据。
您可以配置Git为您存储密码。对于Windows:
git config --global credential.helper wincred
如果您使用https协议,Git将提示您输入密码。如果您使用ssh,它将使用您的私钥进行身份验证,而不是询问密码。
以下是解决此问题的方法:
git远程-v
这将显示来源的url。您将注意到此url中的https。(此处示例)
现在,您必须先删除这个,然后使用ssh添加url
git remote remove origin
git remote add origin git@github.com:PrestaShop/PrestaShop.git
如果你想阻止Git总是要求你提供GitHub存储库的登录凭据,这很容易做到。
使用SSH而不是HTTPS
您可以使用SSH而不是HTTPS更新源远程“
git remote set-url origin git@github.com:username/your-repo.git
配置Git以存储密码和用户名
下面是如何让Git存储用户名和密码:
git config --global credential.helper store
接下来,保存会话的用户名和密码:
git config --global credential.helper cache
在Windows for Git 1.7.9+中,在命令提示符下运行以下命令以在文本编辑器中打开配置文件:
git config --global --edit
然后在文件中,添加以下块(如果不存在)或相应地进行编辑:
[credential "https://giturl.com"]
username = <user id>
helper = wincred
保存并关闭文件。在上述更改后,您只需提供一次凭据。
我认为您可能有错误的Git存储库URL。
打开.git/config并找到[remote“origin”]部分。确保您使用的是SSH:
ssh://git@github.com/username/repo.git
如果单击克隆或下载并选择SSH,您可以在存储库的主页面中看到SSH URL。
而不是https或git:
https://github.com/username/repo.git
git://github.com/username/repo.git
现在,您可以只使用SSH密钥而不是用户名和密码进行验证。
如果Git抱怨已经添加了'origin',请打开.config文件,将[remote origin]后面的url=“…”部分编辑为url=ssh://github/username/repo.git
其他服务也是如此。确保地址如下:protocol://something@网址
例如,Azure DevOps的.git/config:
[remote "origin"]
url = https://mystore@dev.azure.com/mystore/myproject/
fetch = +refs/heads/*:refs/remotes/origin/*