尝试在运行 ubuntu(主机 Windows 10)的 VM 上获取数据时,我遇到了相当奇怪的体验。我需要从 repo 获取更改到我的计算机上,所以我使用了 git fetch,除了它卡在终端上。
所以基本上我有这个($来自终端,不是命令的一部分):
$ git fetch
cursor stuck here
然后我尝试了这个(我希望它可能比 fetch 更强):$ git fetch --all
cursor stuck here
我在 fetch 调用上运行了 strace,这是我不太明白发生了什么,但它基本上停在这样的一行:read(5,
我注意到一些 ssh 目录不存在(来自 strace 的一些 -1 ENOENT 错误),所以我测试了我的 ssh 命令,它们也挂了。或者至少我认为。对于我的一个别名,它似乎确实挂了。但是,当我将该别名复制/粘贴到终端时,它最终工作了(只是非常缓慢)。然后,我测试了我的 ssh 别名,它们也开始正常工作。奇怪的...
此时我尝试了
git fetch
又成功了!!!但是,我不知道发生了什么,有人知道吗?这是一个值得研究的问题吗?
编辑:
完成一个 fetch 调用后,我无法再获取。 SSH 现在不一致。 git pull 挂起。
git pull 上的 strace 以 a 结尾
wait4(4439,
此外,似乎有很多 -1 ENOENT 错误提示各种 .git 目录。这对于 ssh 和 git 命令来说只是一个速度问题吗?
EDIT2:
所以我尝试了评论中的建议(将 GIT_TRACE 设置为 2,因为我在 ubuntu 中所以起诉导出)。它显示了引擎盖下每个 git 调用的情况,并且由于某种原因 git pull/git fetch freeze 大约在中途。大约 20 分钟后,它们解冻并再次工作。
我可能会离开我的电脑并重新启动虚拟机,明天(漫长的一天)看看它。有没有人有任何建议来加快速度/为什么会发生这种情况?
最佳答案
@NateElredge 似乎就在这里,似乎是网络问题。我认为我的 vm 一定是过度劳累或其他原因,在重新启动 vm 和我的主机并让它们在一夜之间关闭 ssh/git fetch/git pull 现在可以正常工作。
编辑 2:所以这似乎只是一个虚拟盒子问题。显然,它只会大大降低网络连接速度。
编辑 3:解决这个问题的方法是下载一个更快的终端。我最终从 here 下载了 Alacritty .对于 git 和 npm/expo,它的运行速度比 Ubuntu 20.04 的默认终端快得多。
对于那些不想点击链接的人,这是 tl;博士 :
----------- [Arch Linux] -----------# pacman -S alacritty
----------- [Fedora Linux] -----------# dnf copr enable pschyska/alacritty
# dnf install alacritty
----------- [Debian 和 Ubuntu] -----------$ sudo add-apt-repository ppa:mmstick76/alacritty
$ sudo apt install alacritty
唯一的缺点是 Alacritty 没有终端窗口(至少我似乎不知道如何使用它们)。但是,不要绝望,您可以安装 tmux(对于 ubuntu:$sudo apt install tmux
)。
关于git - Ubuntu VM git fetch 挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62568255/