我使用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密钥之外,我是否需要为此设置其他东西?
当前回答
运行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。
希望这有帮助!
其他回答
如果你想阻止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
git config credential.helper store
注意:虽然这很方便,但Git会将您的凭据以明文形式存储在项目目录下的本地文件(.Git凭据)中(请参见下面的“home”目录)。如果不喜欢,请删除此文件并切换到使用缓存选项。
如果您希望Git恢复到每次需要连接到远程存储库时都向您请求凭据,可以运行以下命令:
git config --unset credential.helper
要将密码存储在%HOME%目录(而不是项目目录)中的.git凭据中,请使用--global标志
git config --global credential.helper store
我有这个问题。回购要求我每次都输入凭证。我所有的其他经纪人都没有要求我出示证件。他们甚至被设置为在相同的帐户凭据下使用HTTPS跟踪GitLab,所以奇怪的是,除了一个,他们都工作得很好。
比较.git/config文件,我发现导致问题的URL中有两个关键差异:
确实要求提供凭据:
https://gitlab.com/myaccount/myproject
不要求提供凭据:
https://myaccount@gitlab.com/myaccount/myproject.git
因此,添加“myaccount@”和“.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时,它不会再消失。
正如其他人所说,您可以安装密码缓存助手。我主要只是想发布其他平台的链接,而不仅仅是Mac。我正在运行Linux服务器,这很有用:在Git中缓存GitHub密码
对于Mac:
git credential-osxkeychain
窗户:
git config --global credential.helper wincred
Linux:
git config --global credential.helper cache
git config --global credential.helper 'cache --timeout=3600'
# Set the cache to timeout after 1 hour (setting is in seconds)