注意我已经研究了git-is-very-very-slow问题,但在他们的情况下,原因是大的二进制文件-而在我的存储库中只有PHP/JS/HTML/CSS代码(没有二进制文件),存储库中最大的文件大约是800 KB。
我修改了一个文件(几行),然后是git add .
和git commit -m "msg"
,然后是git push origin master
。
在另一台机器上,当我执行git pull origin master
时,它会下载几个MiB的数据,并且需要2分钟以上的时间来计算增量并应用更改。这里面有很大的问题。
我怀疑最近的一些操作可能会导致这种情况:
最近,我无意中添加了许多供应商资产(bower_components
资产),当我意识到这一点时,我已经使用git rm
将它们从存储库中删除(当然,git add
,git commit
和git push
到上游)。
那是几天前的事了,我现在的问题就是在那个时候开始出现的。
我有两个问题:
- 为什么会这样?
- 如何修复我的存储库?
注意:我是唯一一个使用和推到这个仓库。
9条答案
按热度按时间xpcnnkqh1#
我也有同样的问题。对我来说,这是一个IPv4/IPv6问题。我修复了它,强制SSH使用IPv4。
在/etc/ssh/ssh_config中设置“AddressFamily inet”以强制IPv4连接。然后重启ssh客户端
sudo service ssh restart
更多信息here.
qlzsbp2j2#
当我处理成千上万的小文件时,我也遇到了同样的问题。解决这个问题的方法是在git repo的配置中设置postbuffer
而不是以18 KB/s上传它突然去了全带宽
knpiaxh13#
我尝试了所有的解决方案在这个线程没有运气。在一位同事的建议下,我尝试使用了Git protocol 2,结果非常有效(从等待3分钟的拉入/推入开始到几秒钟)
h5qlskok4#
问题出现在
EmberJS
应用程序目录中。它包含node_modules
和bower_components
目录,这些目录保存了GruntJS
用来构建我的JS和CSS资产的第三方库。其中每个都包含许多文件和目录。考虑到依赖关系树包含大小从小(几个文件)到大(很多文件)变化的数百个库。
删除这些目录并忽略它们之后,git仓库再次快速工作。
e4eetjau5#
我也有过类似的经历-- git pull和push突然开始运行得非常慢,在我本地的Mac OSX和Linux / Apache服务器上都需要十分钟或更长时间。我删除了我Mac上的回购的本地副本,并重新克隆它,它开始运行良好。在服务器上做了同样的事情,一切都很好。我想它被某种方式损坏了?
ojsjcaue6#
如果有人偶然发现这个线程,在删除.git文件夹之前,尝试重新启动您的WiFi,这可能只是您的WiFi连接问题。
xwbd5t1u7#
不仅协议v2会有帮助,提交图(mentioned here)也会有帮助。
在Git 2.34(Q4 2021)中,通过利用提交图(当可用时)优化了引用提示的加载,以准备“
git fetch-pack
“(man)中的公共祖先协商。参见commit 3e5e6c6(2021年8月4日),作者Patrick Steinhardt (
pks-t
)。(由Junio C Hamano --
gitster
--合并至commit 1b2be06,2021年8月24日)fetch-pack
:通过提交图加速引用加载签字人:帕特里克·斯坦哈特
在进行引用协商时,git-fetch-pack(1)从磁盘加载所有引用,以确定它与远程仓库有哪些共同的提交。
这在有许多引用的存储库中可能非常昂贵:在一个拥有大约220万个refs的真实仓库中,通过ID获取一个提交需要大约44秒。
占主导地位的加载时间是解压缩和解析提交引用的对象。
在这种情况下,我们只关心提交(或可以剥离为一个的标签),因此,如果我们有一个可用的提交图,通过切换解析逻辑来使用提交图,可以轻松获得性能优势。
像这样,我们避免了访问对象数据库来解析这些提交,而是只从提交图中加载它们。
当在具有220万个引用的存储库中执行
git-fetch
(man)时,这会导致显著的性能提升:mbyulnm08#
我使用Linux Mint和GitLab和GitHub。我以前在pull/fetch上没有问题,但突然间我只在GitLab上遇到了问题。阅读这个帖子后,我明白了它可能与SSH和IPv4/6有关。
当我在https://whatismyipaddress.com/上看到网站找不到我的IPv6地址时,我重新启动了我的路由器。现在一切都好了。
所以在开始更改设置之前,请尝试以下简单解决方案
nuypyhwy9#
这可能是由于您使用的git协议。我把gitlab项目的url切换到了***https***,慢的噩梦消失了!
您可以编辑您的存储库
.git/config
并更改为https url,或通过命令: