我刚刚从磁盘上丢失了一堆存储库,所以我从 GitHub 克隆了它们。现在每次我将某些内容推送到 GitHub 时,它们都会要求输入用户名和密码。那些尚未删除的存储库不会出现这种情况。
我读到的摆脱用户名/密码提示的唯一解决方案是生成 ssh 密钥。问题是我已经有一个密钥了,否则我无法在没有提示的情况下推送那些我没有克隆的存储库。
我查看了git config
我的两个存储库,一个可以不输入密码推送,另一个是我克隆的。唯一的区别是branch.master.remote
设置branch.master.merge
,我取消了设置,使之git config
相同。但提示仍然存在。
我甚至不确定生成新的 ssh 密钥是否可行。我有什么选择?
答案1
我猜:
您的旧存储库使用了 SSH 远程服务器([email protected]:
或前缀),它们使用公钥身份验证。(事实上,Github SSH 服务器ssh://[email protected]/
绝不要求输入密码。
您的新存储库使用 HTTP 远程 ( ),它仅支持基于密码的https://username@github.com/
HTTP 基础身份验证并且不要使用您的 SSH 密钥。
更改远程 URL 以再次使用 SSH。使用git remote set-url
或编辑.git/config
来执行此操作。替换
https://用户名@github.com/用户名/repo.git
只需
[电子邮件保护]:用户名/repo.git
您甚至可以在您的~/.gitconfig
条目中告诉 git 将远程 URL 从 HTTP 或 Git 转换为 SSH。
这样,如果您的存储库配置为 HTTP 或 Git 远程,git 将在推送时忽略该设置并改用 SSH。
[url "[email protected]:"]
pushInsteadOf = git://github.com/
pushInsteadOf = https://github.com/
(insteadOf =
也可以设置覆盖拉动和推动。)