我最近升级到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
是否正常工作。 - torekwhich git
给了我期望的版本,less也安装好了。我不认为这仅与输出有关,因为输出对于git log
等命令有效,但是所有跟远程调用有关的命令都无法执行。 - Giorgiossh
,而不是编译在libcurl中(编译的库会带来所有动态链接器的复杂性)。 - torekssh-add
,只是为了确保。但如果问题是由于ssh引起的,那么它一次都不会工作。例如,当我重新启动计算机时,有一个通话可以接通,这意味着ssh不应该是问题。但我现在还是会再次检查ssh。 - Giorgiossh
有关。刚刚运行了一个ssh -T git@github.com
,结果相同。现在我为我的gitlab存储库添加了一个https
远程,使用该远程推送工作正常。我发现https://apple.stackexchange.com/questions/430363/monterey-ssh-with-hardware-key-only-works-once,但看起来openssh并不一定是解决方案。我会继续深入研究... - Giorgio