我使用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密钥之外,我是否需要为此设置其他东西?
当前回答
在Windows for Git 1.7.9+中,在命令提示符下运行以下命令以在文本编辑器中打开配置文件:
git config --global --edit
然后在文件中,添加以下块(如果不存在)或相应地进行编辑:
[credential "https://giturl.com"]
username = <user id>
helper = wincred
保存并关闭文件。在上述更改后,您只需提供一次凭据。
其他回答
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时,它不会再消失。
我觉得static_rtti提供的答案在某种意义上很粗糙。我不知道这是否在早期可用,但Git工具现在提供了凭据存储。
缓存模式
$ git config --global credential.helper cache
使用“缓存”模式将凭据保存在内存中一段时间。没有一个密码存储在磁盘上,15分钟后将从缓存中清除。
存储模式
$ git config --global credential.helper 'store --file ~/.my-credentials'
使用“存储”模式将凭据保存到磁盘上的纯文本文件中,它们永远不会过期。
我个人使用的是商店模式。我删除了存储库,克隆了它,然后必须输入一次凭据。
参考:7.14 Git工具-凭证存储
在我的情况下,当我尝试选择如下URL时,总是会收到密码提示:
git fetch http://username@gerrit-domainname/repositoryname refs/changes/1/12345/1 && git cherry-pick FETCH_HEAD
当cherry在另一台机器上选择时,这个URL工作得很好。然而,当我尝试使用正确的密码进行cherrypick时abc@12345我过去常犯以下错误:
remote: Unauthorized
remote: Authentication failed for http://username@gerrit-domainname
在我的git配置文件中,远程URL如下所示:
url = ssh://gerrit-domainname:8080/wnc
解决方案:我通过提供HTTP密码解决了身份验证失败问题,该密码位于我的gerrit帐户->设置->HTTP密码。
HTTP密码类似于Th+IsAduMMy+PaSS+WordT+RY+Your+OwNPaSs,这与我的实际密码有很大不同abc@12345
注意:我的cherrpick URL以gitfetch开头。。。因此,此解决方案可能适用于git签出/下载,其中URL以git fetch开头。。。
运行macOS Cataline 10.15时,密钥链缓存方法对我不起作用
以下是对我有用的:
git remote rm origin
git remote add origin https://your_git_username:your_git_password@github.com/path_to_your_git.git
这也应该在GitLab上运行
确保用户名包含电子邮件地址,以删除@email部分,否则您将收到一个错误,说明URL使用了错误/非法格式或缺少URL。
希望这有帮助!
我同意“codehugger”,并使用“orkoden”的指令,它对我有效-在NetBeans 7.3上-当您右键单击文件并选择上下文菜单-push-打开“push to remote”窗口时-这里有两个选项:
来源:https://github.com/myaccount/myproject.git/https://github.com/myaccount/myproject.git/
正如您所看到的,区别在于URL中的原始参数-您不想选择此选项(1),您想检查选项(2),这对我来说很好。