Git 在编写对象时挂起

我正在尝试 git push -u origin master,它只是挂在

Writing objects:  99% (219/220), 12.65 MiB | 97 KiB/s

12.65的零件四处移动。当我退出流程并再次运行它时,它将以99% 的速度继续运行,但从未完成,与以前相同。

它从未成功推送过,这是初始提交。

89128 次浏览

这是因为在回购目录中有一个巨大的、无法忽略的文件。

剪辑

挂起是因为文件上传需要很长时间。文件不应该被包含在推送中。

剪辑

虽然这是真的,一个巨大的文件可能是背后的原因,这个问题,如果你不能忽略该文件或只是 推动它,然后按照 这个的答案。

我有同样的问题(写对象% 16)卡住然后致命。我通过保存当前的更改并克隆一个新的存储库,然后将修改后的文件复制到其中来解决这个问题。

假设当前存储库是 A,那么您需要做的就是:

  1. mv A B
  2. git clone A
  3. mv B/* A/
  4. rm -rf B

然后提交和推送,一切正常。它识别被移动的文件是修改过的:)

我听从了 VonC 的建议:

git config --global http.postBuffer 524288000

以供日后参考,基于评论:

500 MB: 524288000 (as posted in the original answer)
1 GB: 1048576000
2 GB: 2097152000 (anything higher is rejected as 'out of range')

git clean -f -n解决了我的问题。有许多未被跟踪的文件没有被检测到。 但要小心,因为这将删除目录中的文件

在我的情况下,我有缓慢的互联网上传速度和文件,我想推大,诀窍是使用 git LFS (大文件存储) ,这是更耐心上传大文件,你可以找到一个 Git LFS 教程

在我的例子中,我使用的是一个 git 文件夹,其权限与一个 repo 存储在同一个驱动器上,但是即使您使用授权的登录用户,ssh 也可以使用相同的权限。

检查然后,如果你有正确的权利写在远回购。

例如:

启动本地和远程回购

git init /tmp/src
git init --bare /tmp/dst
cd /tmp/src

将远程回购添加到原点

src > git remote add dest /tmp/dst

模拟问题

src > chmod -R 555 /tmp/dst

添加虚假文件并推送它

src > touch a && git add a && git commit -m 'demo'
src > git push --set-upstream dest master
src > git push
Counting objects: 3, done.
Writing objects: 99% (2/3), 202 bytes | 0 bytes/s.

被绞死了

解决方案

src > chmod -R 775 /tmp/dst

就我而言,我试图在没有完成公司规定的情况下推进。 后来我了解到,我们应该以“ MOBIL-XXXX”开始我们的提交消息,其中 XXXX 是分析师在 Jira 分配给开发人员的数字(另一个我们用来跟踪开发过程的工具)。

确保检查你的公司是否有类似的约束规则。

在我的情况下,这是文件的大小。通过添加一个。带有所需扩展名的 gitignore 文件我可以忽略大多数不需要的文件。

我在 Windows10机器上遇到了同样的问题,writing objects挂起来了,但是在一个不同的情况下。

我遇到的问题只有在我试图向存储库添加新文件时才会出现。如果我更新了存储库中已经存在的文件,那么一切正常,文件大小是否大并不重要。我主要是想添加新的脚本。

我尝试了在互联网上找到的所有其他解决方案,但没有一个在我的情况下和我尝试的最后一件事实际上工作。这似乎是因为 Windows 对特定驱动器和文件夹的某些权限阻止了应用程序在这些特定文件夹中写入或更新文件,即使我以管理员帐户登录并以管理员身份运行应用程序。所以这个命令:

attrib -r +s D:\foldername

帮我解决了问题。

只是发到这里,也许有人和我有同样的问题。