如何调试:Git pull 在执行 git pull 操作时挂起(总是在 54%)

8

我向仓库添加了两个大文件(每个150MB),现在git pull总是卡在54%。我使用ping检查了网络,尝试使用其他网络,进行了git fsck等操作。无济于事。

  • 我该如何调试?

  • 是否有一种方法可以仅获取其中一个大文件?问题是我的本地git不知道最后的提交=-(


考虑使用git-annex高效管理大型文件可能是值得的。更多详细信息请参见https://dev59.com/GHRB5IYBdhLWcg3wtZQV#6635160. - Prakash Murthy
谢谢!我肯定会这么做。但是即使我从远程仓库中删除了这两个文件,我仍然无法拉取。对象数量现在更多了。尽管如此,Git 仍然卡住了。 - louis cypher
尝试运行 git pull -v 并查看日志是否有任何输出。 - Tarun Lalwani
请提供更多上下文信息,例如遥控器在哪里,你是如何添加这些文件的?如果是Github、Gitlab等系统,请告知遥控器运行在哪个系统上?当它挂起时,能否发布错误输出?此外,你是否尝试从另一台电脑或干净的本地仓库拉取代码? - LightCC
1
如果你在Linux上,你可能有这个命令;如果你在Windows上,它可以在Git for Windows的Bash shell中使用。strace git pull <...>的输出是什么? - Samir Aguiar
显示剩余2条评论
3个回答

1
但即使我从远程仓库中删除了这两个文件,我仍然无法拉取。

您是如何“删除这两个文件”的?

您需要将它们从您的仓库历史提交记录中全部删除。

为此,请参见例如:如何从Git仓库提交历史中删除/删除大型文件?


检查你的 git pull 是否真的被卡住了或者只是非常缓慢:检查你的计算机和托管中央仓库的服务器之间的网络流量。
如果您有其他方法获取这两个大文件(例如:从USB存储设备复制到本地仓库...),您可以从本地仓库运行git add(不要运行git commit)将这些文件添加到其中,然后运行git reset .以取消暂存。

这应该会将这些文件添加到本地仓库已知对象列表中,而git pull则不需要再次下载它们。


0

我认为你遇到的问题是每次克隆都会在中途中断。

因此,建议你不要每次都从头开始克隆仓库,而是在新创建的仓库上执行一次获取操作。

基本上,初始化一个空的存储库即可。

cd repo_name && git init

在此仓库中添加原始仓库作为远程仓库。
git remote add origin url/to/repo

现在执行 git fetch 命令。

这样,即使您的克隆在中途中断,fetch 命令也会在下一次运行时负责获取未获取的对象。


0

增加 Git 缓冲区大小:

git config --global http.postBuffer 157286400

缓冲区大小应设置为最小值,以解决问题。


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