Git卡在写入对象上无法进行。

14
我正在尝试执行 git push --all 命令,但在写入对象时卡住了。
10.0-final-project git:(master) ✗ git push --all
Counting objects: 134, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (129/129), done.
Writing objects:  32% (44/134), 321.56 MiB | 231.00 KiB/s

321.56 MiB和231.00 KiB/s继续上升。

我尝试使用git config --global http.postBuffergit config --global sendpack.sideband false,但都没有效果。请问如何解决这个问题?


2
如果你试图将321MB的数据推送到git,那么你可能做错了什么。你有一个.gitignore文件吗?你是否正在将一些最好放在CDN / S3存储桶中的东西推送到仓库中(如图片、视频等)? - taylorc93
Git 无法处理大文件。实际上,这是 git 技术的一个巨大失败。你必须在超过 ~60MB 的任何内容上使用 LFS,这相当糟糕。Git 粉丝们会因我说这话而撕碎我,但事实是 git 在维护大文件方面非常糟糕。显然,大文件通常是应用程序开发的一部分,所以这确实是 git 技术本身的一个令人讨厌的问题。 - Benny Schmidt
5个回答

15

看起来你在GIT中添加了一个非常大的二进制文件或文件夹。

这不是应该使用git的方式。

如果是这种情况,考虑使用类似Git Large File Storage的解决方案。

另一篇相关文章可以在这里找到,并提供了一些清理存储库的示例代码。


步骤1:查找大文件。

我们需要搜索所有历史记录以找到适合删除的文件。据我所知,这很复杂,因此这里提供一个复杂命令,列出所有超过一百万字节的文件的所有修订版本大小总和。在mac上运行。

git rev-list master | while read rev; do git ls-tree -lr $rev | cut -c54- |     grep -v '^ '; done | sort -u | perl -e '
  while (<>) {
      chomp;
      @stuff=split("\t");
      $sums{$stuff[1]} += $stuff[0];
  }
  print "$sums{$_} $_\n" for (keys %sums);
 ' | sort -rn >> large_files.txt

步骤2:将它们移除,就像它们从未存在过一样。

这是有趣的部分。如果large_files.txt仍然与之前的格式相同,请执行以下操作:

git filter-branch --tree-filter 'rm -rf `cat /full/path/to/large_files.txt |
    cut -d " " -f 2` ' --prune-empty <BRANCHES>

谢谢你指出来。一直遇到卡住的问题,看到你的答案才发现自己忘了忽略一个巨大的文件。 - kevinabraham

9

我遇到了相同的问题。但是问题的原因是当前用户没有目标目录的写入权限。


2
谢谢,这就是我遇到的问题。我在以root身份在我的服务器上创建了一个裸git仓库。 - milosa
sudo chmod 777 -R 文件名 // 完全开放 :) - kiwicomb123
我一直在寻找这个问题的解决方案,但我意识到问题出在Git文件夹的权限上。如果有人遇到了这个问题,请看一下这个。 - Otavio Souza Rocha
问题已经解决了。我将仓库复制回原处,没有递归地更改权限(只更改了目录)。 - karimkorun

0

背景:
我的一个同事错误地上传了一堆由CocoaPods在Pods目录下生成的巨大文件和相关更改(是的,通常它被git忽略了,但由于某些路径更改而被上传)。所以我尝试修改最后一次提交并尝试强制更新远程分支。

上传速度非常慢,就像OP的帖子描述的那样。显然,我等待了大约30分钟,认为它会完成,而且我不确定更改有多大,因为我之前无法检查它。

我做了什么?
我只是通过点击:CTRL + C停止了上传,然后重试了git push -f(在我的情况下,这是一个强制更新,因此使用了标志-f

它迅速地上传了。令人惊讶的是,上传大小并不是很大,只有22MB。


0

我之前因为大文件的问题遇到过这个问题(例如在CodeWizard's answer中),但最近我也遇到了一个冻结的push,原因是我电脑上运行的VPN。

一旦我关闭了VPN,我就可以毫无问题地将代码push到我的Github仓库中。


-2

推荐 找到你的隐藏文件并删除.git文件 - 我的文件大小超过6GB


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