Git拉得很慢..为什么?

时间:2014-02-26 11:40:19

标签: git version-control repository

注意我已经研究了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 addgit commitgit push移到上游)

那是几天前,我现在遇到的问题现在就开始发生了。

我有两个问题:

  • 为什么会这样?
  • 如何修复我的存储库?

注意:我是唯一一个使用并推送此回购的人。

6 个答案:

答案 0 :(得分:4)

我有类似的经历 - git pull and push突然开始极慢地运行,花了十分钟或更长时间,在我的本地Mac OSX和我的Linux / Apache服务器上。我在Mac上删除了repo的本地副本,然后重新克隆它,它开始运行正常。在服务器上做了同样的事情,一切都很顺利。我想它有点被腐蚀了?

答案 1 :(得分:4)

我有同样的问题。对我来说,这是一个IPv4 / IPv6问题。我修复了它强制SSH使用IPv4的问题。

在/ etc / ssh / ssh_config中设置“ AddressFamily inet”以强制进行IPv4连接。然后重新启动ssh客户端sudo service ssh restart

更多信息here

答案 2 :(得分:3)

问题发生在EmberJS app目录中。它包含node_modulesbower_components目录,这些目录保留GruntJS用于构建我的JS和CSS资产的第三方库。

每个都包含许多文件和目录..考虑到依赖树包含数百个大小不同的库,从小(少量文件)到大胖(许多文件)。

删除这些目录并忽略它们之后,git存储库再次快速运行。

答案 3 :(得分:2)

我很幸运地尝试了该线程中的所有解决方案。我在同事的建议下尝试使用git协议2,最终效果非常好(从等待3分钟以内的拉/推动作开始到几秒钟)

git config --global protocol.version 2

答案 4 :(得分:1)

在处理成千上万个小文件时,我遇到了同样的问题。 对我而言,修复此问题的方法是在git repo的配置中设置后缓冲

git config http.postBuffer 524288000

不是以18KB / s的速度上传,而是突然达到了全部带宽

答案 5 :(得分:0)

以防万一有人偶然发现此线程,在删除.git文件夹之前,请尝试重新启动wifi,这可能只是您的wifi连接问题。