我正在使用 VSCode 的远程 SSH 实用程序访问托管在 Google Cloud 上的虚拟机。我的本地机器是 Mac。
那里有我正在处理的几个 GitHub 存储库。昨天我遇到了一些问题,最后不得不摆弄我的 SSH 密钥,我想我搞砸了一些东西。
我直接登录虚拟机进入其中一个目录(即my_VM:~/foo
)。需要说明的是,我没有登录主~
目录,然后cd foo
直接登录~/foo
。这是 VSCode 在简单 SSH 之上提供的功能。
我还认为,值得注意的是,foo
昨天在我摆弄 SSH 密钥后克隆了它。
并尝试过git push
,但却得到了回应Username for 'https://github.com':
,这从未发生过。
我搜索了一下,显然只要git clone
通过 HTTP 使用就会发生这种情况,这很奇怪,因为这种情况从未发生过。
但后来,当我决定关闭连接并重新连接到另一个目录时,事情变得非常奇怪~/bar
。当我在那里尝试时git push
,它成功了,没有用户名请求。
然后,如果我这样做cd ../foo
并再试git push
一次,它仍然有效!
因此,如果我连接到my_VM:~/foo
,git
似乎没有存储我的凭据。但如果我连接到my_VM:~/bar
,则有。
foo
和均bar
显示相同的输出git remote show origin
:
* remote origin
Fetch URL: https://github.com/wasabi/foo # or /bar
Push URL: https://github.com/wasabi/foo # or /bar
[...]
知道这意味着什么吗?如何解决它,以便 Git 再次记住我的凭据?我特别担心,因为我今天克隆了其他几个存储库,从现在开始它们都要求用户名;似乎只有较旧的存储库(在昨天摆弄密钥之前)在“正常”工作。