Git在写对象时挂起

mat*_*ndr 80 git

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

Writing objects:  99% (219/220), 12.65 MiB | 97 KiB/s
Run Code Online (Sandbox Code Playgroud)

12.65部分转移四周.当我退出该过程并再次运行时,它恢复到99%但从未完成,与以前一样.

它永远不会成功推动.这是最初的提交.

Hug*_*rte 189

我遵循VonC的建议:

git config --global http.postBuffer 524288000
Run Code Online (Sandbox Code Playgroud)

  • @Ryre它是500 MB (5认同)
  • omg,谢谢你!我把头发拉了出来,这解决了我的问题! (4认同)
  • 谁能解释一下'524288000`的来源? (4认同)
  • @HugoForte增加缓冲区似乎解决了我挂文件的问题,但是我的git push从未完成(在写入对象:100%`之后挂起) - 之前它挂了25%所以这显然有帮助.但是,我仍然有"怪异"的行为.我**重新启动了我的系统**这似乎解决了问题... FYI ...如果有人在增加缓冲区后仍然遇到问题,重新启动我的系统有助于我的情况(旧学校的解决方案,但新的重启真的很有帮助). (2认同)
  • 上帝保佑你和 Stackoverflow,如果没有,我将是一个彻头彻尾的失败者, (2认同)
  • @twknab 即使重新启动我的系统后,推送也没有完成。你对此有什么解决办法吗? (2认同)

mat*_*ndr 32

这是因为repo目录中存在巨大的,未签名的文件.哎呦.

编辑

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

  • 是的,您的解决方法是删除问题.为了其他真正需要推送大文件的人,@ hugo-forte的答案解决了这个问题.你没有*,我只是认为它会帮助更多的人 - 本着SO的精神. (4认同)
  • 问题不是“我如何提交,然后推送一个大文件?”。这是“我的 git push 永无止境。为什么?” 如果您不希望推送永远持续下去,那么您可能(像我一样)并不打算提交那个巨大的文件。 (2认同)
  • @mattalxndr当接受的答案具有1/8票时,您可能应该更改它。 (2认同)

小智 7

我遇到了同样的问题(编写对象%16)然后致命.我通过保存当前更改并克隆新存储库来解决此问题,然后将修改后的文件复制到其中.

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

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

然后提交并推送,一切正常.它将移动的文件识别为已修改:)


Nae*_*wis 5

就我而言,我使用的 git 文件夹与存储在存储库相同的驱动器上具有错误的权限,但即使您使用授权登录用户,它也可能与 ssh 相同。

然后检查您是否具有在远程存储库上写入的正确权限。

例子:

初始化本地和远程仓库

git init /tmp/src
git init --bare /tmp/dst
cd /tmp/src
Run Code Online (Sandbox Code Playgroud)

将远程仓库添加到源

src > git remote add dest /tmp/dst
Run Code Online (Sandbox Code Playgroud)

模拟问题

src > chmod -R 555 /tmp/dst
Run Code Online (Sandbox Code Playgroud)

添加假文件并推送

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.
Run Code Online (Sandbox Code Playgroud)

Git挂起

解决方案

src > chmod -R 775 /tmp/dst
Run Code Online (Sandbox Code Playgroud)

  • 请考虑在您的答案中添加更多示例性细节,谢谢。 (2认同)