macOS升级到Monterey后,使用Git push pull clone命令没有任何作用。

4

我最近升级到macOS Monterey,发现无法执行影响在线仓库的任何git命令。目前受影响的命令有:

git push
git pull
git clone

所有的命令都只是输出nothing,字面上来看。我输入这些命令,甚至没有错误提示,即使过了几分钟,远程仓库也没有被推送。

到目前为止我尝试了什么

我尝试在Github和Gitlab上使用私有和公共仓库来运行这些命令。我的ssh密钥已经就位,远程URL似乎也没问题,我没有进入分离的HEAD模式,我重新安装了Xcode和Xcode开发工具,我通过Homebrew升级了git,我通过Homebrew重新安装了git,我在系统设置中激活和停用了防火墙,现在我尝试关闭并重新启动我的Mac电脑(但它仍然不起作用)。

目前看来可行的方法

GIT_CURL_VERBOSE=1 GIT_TRACE=1 git push

这给我整个日志,推送成功。
13:56:35.495625 git.c:455               trace: built-in: git push
13:56:35.497727 run-command.c:668       trace: run_command: unset GIT_PREFIX; ssh git@gitlab.com 'git-receive-pack '\''airshopers/storefront.git'\'''
13:56:43.997487 run-command.c:668       trace: run_command: .git/hooks/pre-push origin git@gitlab.com:airshopers/storefront.git
Everything up-to-date

此外,在计算机重新启动后运行的第二个git push似乎有效。
更新:添加详细和跟踪标志也不能解决问题,因为这种“解决方法”会随机停止工作,我会再次看到前面提到的行为。
我真的已经尽力了,欢迎任何提示 :)

有用的额外调试命令:which git(可能取决于shell),type git(类似)。还要检查您的core.pager设置,如果没有设置,请检查less和/或more是否正常工作。 - torek
感谢@torek,which git 给了我期望的版本,less也安装好了。我不认为这仅与输出有关,因为输出对于 git log 等命令有效,但是所有跟远程调用有关的命令都无法执行。 - Giorgio
有趣。这表明ssh和/或libcurl存在一些问题。你所有的远程都是ssh访问吗?至少更容易调试,因为Git在这里只是运行ssh,而不是编译在libcurl中(编译的库会带来所有动态链接器的复杂性)。 - torek
嗯..所以我之前运行了ssh-add,只是为了确保。但如果问题是由于ssh引起的,那么它一次都不会工作。例如,当我重新启动计算机时,有一个通话可以接通,这意味着ssh不应该是问题。但我现在还是会再次检查ssh。 - Giorgio
任何 SSH 问题都可能是网络问题,或者安装了多个 SSH 版本,或者其他许多原因。但无论如何,这都是需要探究的地方。 - torek
是的,它与ssh有关。刚刚运行了一个ssh -T git@github.com,结果相同。现在我为我的gitlab存储库添加了一个https远程,使用该远程推送工作正常。我发现https://apple.stackexchange.com/questions/430363/monterey-ssh-with-hardware-key-only-works-once,但看起来openssh并不一定是解决方案。我会继续深入研究... - Giorgio
1个回答

7

升级到 Monterey 后,似乎会破坏 macOS 的 ssh。为了解决这个问题,我从 Homebrew 安装了 openssh:

brew install openssh

安装似乎还更新了默认的 ssh,因此 which ssh 现在指向 /usr/local/bin/ssh 而不是原生的。同时,请确保打开一个新的终端窗口或刷新您的终端。否则,在当前会话中将使用原生的 ssh。看起来这解决了问题,如果我在这里没有遇到任何新问题,我会将此答案标记为已接受。

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