无法设置 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
查看您的配置中是否有任何此类条目以及它们在什么文件中。如果有,您可以从配置文件中删除它们,这应该让事情按预期工作。
我今天在 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
查看您的配置中是否有任何此类条目以及它们在什么文件中。如果有,您可以从配置文件中删除它们,这应该让事情按预期工作。