[英]Git fetch/pull/clone hangs on receiving objects
当从git存储库中获取或提取或克隆存储库时,我得到了这一点:
remote: Counting objects: 6666, done.
remote: Compressing objects: 100% (5941/5941), done.
Receiving objects: 23% (1534/6460), 11.68 MiB | 23 KiB/s
它挂了。 23%/对象的数量不是给定的,它的范围从单个数字到最多60s,似乎。 下载列表的速度也冻结了 - 它不像它慢慢向零爬行。
我坐在旁边的那个人没有问题,所以这不是路由器问题。 我们使用beanstalk作为我们的工作存储库,但是我有来自beanstalk和github的问题(虽然偶尔会看到一个github会完成)。
自从升级到Mountain Lion并更新Xcode以来,这个问题似乎才出现。 我已经擦了git(包括XCode的)并尝试用自制软件安装它。 这不起作用,所以我删除它并尝试使用他们提供的Mac安装包,但也没有解决问题。
Beanstalk为git存储库提供了SSH URL,但我没有遇到通过SCP或SSH连接到我已完成工作的服务器的问题。
这会杀死我的工作流程,所以任何帮助都将非常感谢!
NAT上的 VMware对我来说有这个问题。 将其更改为Bridged(复制状态)修复了问题。
尝试检查您的网络连接。 也许路由表中有垃圾。 可能是您的路由器上的端口损坏或计算机的网络接口问题。 尝试ping你正在克隆git repo的服务器,也许你的计算机和这个服务器之间的链接不稳定。
看起来像我的问题。 在一段短暂的时间之后,Git似乎仍然在抓取或推动。 我可以建议你输入~/.ssh/config
:
Host *
ServerAliveInterval 60
我还有山狮的MBP。 我希望这个超时是导致问题的原因。 (大约三十或四十分钟后,我注意到它继续。)
在Mac上,git fetch应该更能抵抗这类问题,使用Git 2.22(2019年第二季度):在使用SIGPIPE(例如OSX)杀死“git fetch”的平台上,在另一端运行的upload-pack
在检测到错误后挂起可能会导致“ git fetch
”死亡并导致信号死亡,这导致了一个错误的测试。
“ git fetch
”现在在其操作的网络部分中忽略了SIGPIPE(这不是问题,因为我们从write(2)s检查返回状态)。
见提交1435889 (2019年3月3日),并由杰夫金( peff
) 提交37c8001 (2019年3月5日) 。
(由Junio C gitster
合并- gitster
-在提交27cdbdd ,2019年3月20日)
fetch
:在网络操作期间忽略SIGPIPE
默认的
SIGPIPE
行为对于生成大量输出的命令很有用:如果输出的接收器消失,我们将异步通知我们停止生成它(通常是通过终止程序)。但对于像
fetch
这样主要关注接收数据并将其写入磁盘的命令,意外的SIGPIPE
可能会很尴尬。 我们已经检查了所有write()
调用的返回值,并且由于信号导致死亡,我们有机会优雅地处理错误。在Linux上,我们通常在获取期间根本看不到
SIGPIPE
。 如果网络连接的另一端挂起,我们将看到ECONNRESET
。
但是在OS X上,我们得到一个SIGPIPE
,并且该进程被SIGPIPE
。让我们在获取的网络部分期间忽略
SIGPIPE
,这将导致我们的write()
返回EPIPE
,从而为我们提供跨平台的一致行为。
首先尝试通过键入来初始化git存储库文件夹
$ git init
它应该有所帮助
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.