每次 Git (1.7.10) 都要求我输入用户名和密码。

8
自从我有了新版本后,当我每次推送时,它不再要求我使用ssh密钥文件中设置的密码,而是直接要求输入github用户名和密码。这是git的一个新功能还是在过去有所改变,或者是github上发生了什么变化?我尝试使用ssh连接并通过我的ssh密钥文件中的电子邮件和密码进行身份验证,结果成功了。GitHub改用了SmartFTP,并改变了设置存储库的说明。您可以查看以下链接:https://github.com/blog/1104-credential-caching-for-wrist-friendly-git-usage以及https://help.github.com/articles/create-a-repo。我后来发现,他们现在默认使用https代替git协议。

通过运行 git remote -v 命令检查您的远程配置是否真正支持 gitssh 访问。有可能您不小心从 https 克隆了代码库,否则这是不必要的。 - pmr
我看到 Github 更改了设置代码仓库文档,可以参考第三步骤:https://help.github.com/articles/create-a-repo ,现在使用 https,之前是 git@github.com - user753676
3个回答

4

有一天我在GitHub上从新的存储库说明中复制黏贴时遇到了这个问题。可能需要有人提交错误报告,因为它几乎让我知道的所有人都感到困惑。

问题在于说明告诉您创建一个使用https协议而不是git协议的远程。我通常使用以下命令:

github_username=CodeGnome
git remote add origin "git@github.com:${github_username}/${PWD##*/}.git"
git push --tags --set-upstream origin master

从现有的本地存储库中填充一个新的GitHub存储库。

https://github.com/blog/1104-credential-caching-for-wrist-friendly-git-usage 似乎他们写了一篇关于此的博客文章,但没有提到替换说明。 - user753676
那么目前我们每次都需要输入用户名和密码(GitHub认为智能HTTP是未来,所以我们应该使用它吗?)?但好处是,我们可以每次设置我们想要的用户名,这样我们就不会从错误的GitHub账户推送了 =) - user753676
2
@DanielRuf 如果你使用智能HTTP,你可以在Windows和OS X上使用凭证缓存。请参见https://dev59.com/iFLTa4cB1Zd3GeqPXRka#10962447。 - Todd A. Jacobs

2
git config --global credential.helper cache
git config --global credential.helper 'cache --timeout=3600'

当您第一次推送时,只需输入用户名和密码; 之后的3600秒或1小时内,您可以在不需要输入用户名和密码的情况下进行推送。

超时时间可以根据您的需要进行设置。


1

1
我有点喜欢这个,但是带有密码的纯文本文件似乎并不特别安全。整个事情看起来有些反常。 - Thufir
1
@Thufir 在我的店里,我们通过将%HOME%定义为远程磁盘(例如“Z:\”),并将我们的_netrc文件放在那里来缓解“纯文本”问题。如果您愿意,仍然可以加密它:https://dev59.com/wlTTa4cB1Zd3GeqPwuWb#5193917 - VonC

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接