克隆的 GitHub 存储库要求输入密码,而最初创建的则不需要

usr*_*usr 9 git github

我刚刚从我的磁盘中丢失了一堆存储库,所以我从 GitHub 克隆了它们。现在每次我向 GitHub 推送内容时,它们都会要求输入用户名和密码。那些没有被删除的不会这样做。
我为摆脱用户名/密码提示而阅读的唯一解决方案是生成 ssh 密钥。问题是我已经有了一个密钥,否则我无法在没有克隆的那些存储库中没有提示的情况下推送。

我查看git config了我的两个存储库,一个无需密码即可推送,另一个是我克隆的。唯一的区别是branch.master.remotebranch.master.merge设置,我取消设置,使git config相同。但是提示还在。

我什至不确定生成新的 ssh 密钥是否有效。我有哪些选择?

use*_*686 21

我猜:

您的旧存储库使用 SSH 远程(git@github.com:ssh://git@github.com/前缀),它使用公钥身份验证。(事实上​​,Github SSH 服务器从不要求输入密码。)

您的新存储库使用 HTTP 远程 ( ),它仅支持基于密码的HTTP 基本身份验证,不使用您的 SSH 密钥。https://username@github.com/

更改远程 URL 以再次使用 SSH。使用git remote set-url或编辑.git/config来做到这一点。代替

https://用户名@github.com/用户名/repo.git

只是

git@github.com:用户名/repo.git

你甚至可以在你的条目中~/.gitconfig告诉 git 将远程 URL 从 HTTP 或 Git 转换为 SSH。

这样,如果您的存储库配置为 HTTP 或 Git 远程,git 将在推送时忽略该设置,而是使用 SSH。

[url "git@github.com:"]
    pushInsteadOf = git://github.com/
    pushInsteadOf = https://github.com/
Run Code Online (Sandbox Code Playgroud)

insteadOf =也可以进行设置,以覆盖拉动推动。)