为什么git remote -v命令显示的URL和我的.git/config文件中的不一样?

3
我正在尝试将我的远程仓库从HTTPS切换到SSH。首先,我验证它最初是HTTPS。我运行以下命令: $ git remote get-url origin 结果是:https://<repo>.git 然后我运行以下命令将其设置为SSH: $ git remote set-url origin git@github.com:<repo>.git 接下来我再次运行以下命令以获取所需的远程URL: $ git remote get-url origin 但它仍然返回:https://<repo>.git
...然而,如果我运行以下命令: git config --get remote.origin.url 然后我会得到预期的URL:git@github.com:<repo>.git

你当前的 git remote -v 状态是什么?包括 push 和 fetch。 - Abdullah Al Maruf - Tuhin
它为我的推送和拉取操作都提供了 https://<repo>.git - Preethi Vaidyanathan
检查 git config --get-all remote.origin.url 是否产生多行输出。如果是这样,并且您的 Git 版本足够新,则 git config --show-origin --get-all remote.origin.url 将向您显示额外条目的来源。您还可能拥有一个 .git/remotes/origin 文件;如果是这样,它可能定义了一个 URL。 - torek
嗯,运行该命令将返回一行,其中包含预期的结果 git@github.com:<repo>.git,这意味着我只有一个配置文件指定了预期的远程 url? - Preethi Vaidyanathan
我这里也遇到了同样的问题。尝试了帖子中提到的所有方法,包括重启机器,但仍然没有解决。git remote -v.git/config 文件中的条目不同。 - user2416984
2个回答

2

检查git全局配置

检查全局git配置是否有任何insteadOf设置,这些设置会自动将git网址替换为https网址。

最初的回答:

检查全局git配置中是否有任何“insteadOf”设置,这些设置会自动将git网址替换为https网址。

git config -l

...
url.https://github.com/.insteadof=git@github.com:
url.https://.insteadof=git://
...

将它们取消:

git config --global --unset-all url.https://github.com/.insteadof
git config --global --unset-all url.https://.insteadof

或者您可以使用git config --global --edit在您的编辑器(nano,vim等)中编辑全局配置并删除相关部分。
再次测试,希望它将显示相同的url,包括git remote -vgit config --get remote.origin.url
我在一个从同事那里收到的VM环境中遇到了同样的问题,由于我没有意识到他们已经添加了这些全局配置设置,所以我无法弄清楚发生了什么。似乎有些人在阻止访问git url的环境中使用此方法作为解决方法。
确认ssh身份验证是否正常工作
除了检查git的配置设置外,确保ssh对git的身份验证正常工作也很有帮助。
ssh -Tv git@github.com

如果成功的话,您应该会看到类似以下的消息。任何类型的错误都表明您的ssh密钥、ssh设置或与ssh相关的环境存在问题,您应该首先检查这些问题。最初的回答。
Hi userName! You've successfully authenticated, but GitHub does not provide shell access.

这是一个非常好的答案,提供了整洁的信息,而且很被低估,因为这个问题非常罕见。 - zviad

0

如果您愿意,可以尝试先移除再添加origin

要移除 origin,请执行以下操作:

$ git remote rm origin

验证原始数据是否已被删除。第二个命令应该会给你一个错误。

$ git remote -v
$ git pull

现在添加源并验证,

$ git remote add origin git@github.com:username/repository-name.git
$ git remote -v

我按照这些步骤操作,但最终仍然得到了 https://<repo>.git - Preethi Vaidyanathan
奇怪!虽然有点傻,但你可以尝试重新启动你的git daemon或者你的机器。 :) - Abdullah Al Maruf - Tuhin

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