如何调试“git pull”占用太多时间的问题?

4
我们遇到了一个问题,就是git pull太费时间,最后是失败了。我们使用公司的Gitlab。 何时发生 我的同事更新仓库时添加了一些巨大的视频和图像文件。我们尝试拉取代码,可能因为这些文件太大而拉取时间太长,并且失败了。 我们尝试过 所有这些都没有解决问题:
  1. 我们从仓库中删除了这些文件。添加到git ignore。
  2. git filter-branch
  3. 我们已经尝试使用这种技术完全删除了大型文件。
  4. 尝试在git filter-branch之后运行git gc命令。
但对于我的同事来说,他能够非常快速地拉取代码,
  1. 可能是因为他在本地已经有了那些文件
  2. 或者他正在使用SSH,我们没有添加它。
错误

remote: Counting objects: 1279, done. remote: Compressing objects: 100% (880/880), done. fatal: The remote end hung up unexpectedly MiB | 743.00 KiB/s
fatal: early EOF fatal: index-pack failed

编辑
  1. 我们的解决方法是从他的系统中复制项目文件夹
  2. 将其作为新文件夹复制到我的系统中。
  3. 创建全新的ssh密钥

1
你的同事使用ssh,而你自己没有使用它,这是什么意思? - Musannif Zahir
@MusannifZahir 我尝试过使用我的现有代码,但它没有起作用。然后我尝试了获取他的代码并创建了新的SSH密钥,然后它就可以工作了。但是我需要从备份中复制我的本地更改,就这样。 - Pramod
2个回答

5

你的同事同步较快,因为他已经有了那个分支。看起来你可能没有正确使用 git filter-branch 来删除大文件。请查看历史记录以确保它不再存在。

您可能还需要运行 git gc 进行垃圾回收。


我的问题是,他把所有文件更新到仓库后,当我尝试拉取代码时,它花费了太多时间并且失败了。即使他直接从仓库中删除了文件,问题仍然存在。我尝试了这些命令,但问题仍然存在。 - Pramod
@Pramod 我怀疑仓库里仍然有这个文件 - 否则不应该需要这么长时间。你可以尝试运行 git filter-branch --tree-filter 'rm -f path/to/videos' HEAD 命令。这将在每个快照中运行删除命令,无论它是否存在 - 你需要更新删除命令。你的同事应该在本地运行这些命令并更新远程仓库。 - Musannif Zahir

0

git config --global protocol.version 1

该命令将解决此问题。在我这里效果很好。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接