我使用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密钥之外,我是否需要为此设置其他东西?
当前回答
我有这个问题。回购要求我每次都输入凭证。我所有的其他经纪人都没有要求我出示证件。他们甚至被设置为在相同的帐户凭据下使用HTTPS跟踪GitLab,所以奇怪的是,除了一个,他们都工作得很好。
比较.git/config文件,我发现导致问题的URL中有两个关键差异:
确实要求提供凭据:
https://gitlab.com/myaccount/myproject
不要求提供凭据:
https://myaccount@gitlab.com/myaccount/myproject.git
因此,添加“myaccount@”和“.git”解决了我的问题。
其他回答
我同意“codehugger”,并使用“orkoden”的指令,它对我有效-在NetBeans 7.3上-当您右键单击文件并选择上下文菜单-push-打开“push to remote”窗口时-这里有两个选项:
来源:https://github.com/myaccount/myproject.git/https://github.com/myaccount/myproject.git/
正如您所看到的,区别在于URL中的原始参数-您不想选择此选项(1),您想检查选项(2),这对我来说很好。
步骤1:检查当前配置
cat .git/config
您将获得:
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
precomposeunicode = true
[remote "origin"]
url = https://github.com/path_to_your_git.git
fetch = +refs/heads/*:refs/remotes/origin/*
[user]
name = your_username
email = your_email
[branch "master-staging"]
remote = origin
merge = refs/heads/master-staging
步骤2:删除远程源
git remote rm origin
步骤3:使用用户名和密码添加远程源
git remote add origin https://your_git_username:your_git_password@github.com/path_to_your_git.git
git config credential.helper store
注意:虽然这很方便,但Git会将您的凭据以明文形式存储在项目目录下的本地文件(.Git凭据)中(请参见下面的“home”目录)。如果不喜欢,请删除此文件并切换到使用缓存选项。
如果您希望Git恢复到每次需要连接到远程存储库时都向您请求凭据,可以运行以下命令:
git config --unset credential.helper
要将密码存储在%HOME%目录(而不是项目目录)中的.git凭据中,请使用--global标志
git config --global credential.helper store
当我升级到macOS v10.12(Sierra)时,我就遇到了这种情况。看起来SSH代理在升级时被清除了。
$ ssh-add -L
The agent has no identities.
只需运行ssh-add即可找到我的现有身份。我输入了密码,很高兴再去一次。
如果您使用的是Windows,而GitHub上突然开始出现这种情况,这可能是由于GitHub最近在2018-02-22禁用了对不推荐的加密算法的支持,在这种情况下,解决方案只需下载并安装最新版本的完整Git for Windows或者仅使用Windows的Git凭据管理器。