无法设置 Git https url – 它自动切换到 git 协议

Unable to set the Git https url – it switches automatically to git protocol

我今天在 Windows 机器上看到了一个非常奇怪的问题,特别是:git push origin master 会失败并显示类似于以下内容的消息:

Unable to push to git://github.com/user/repo
Please use https://github.com/user/repo

太棒了,所以我们尝试了 git remote set-url origin 'https://github.com/user/repo'

当我们再次尝试推送时,出现了一个新的错误:

Unrecognized protocol 'https

这个特殊的错误,奇怪的是,由于命令提示符查看包装引号的方式而发生,因此它可能与 git.

无关

运行 同样的命令,但没有引号:git remote set-url origin https://github.com/user/repo

现在,惊喜!当 运行 git remote -v 它应该 git://github.com/user/repo.

使用 GitHub 桌面版时会发生确切的行为。以这种格式设置 https url 时:https://github.com/user/repo 它会自动更改为 git://github.com/user/repo.


我们通过切换到 ssh urls 解决了这个问题,但这仍然是一个谜。


为什么会发生这种情况?如何调试?

Git 有一项功能,您可以通过将一组模式转换为另一组模式来重写 URL。这是 url.*.insteadOf 模式。

您可以 运行 git config -l --show-origin | grep insteadof 查看您的配置中是否有任何此类条目以及它们在什么文件中。如果有,您可以从配置文件中删除它们,这应该让事情按预期工作。