Git在写入对象时挂起

Git在写入对象时挂起,git,Git,我试图git push-u origin master,它只是挂起在 Writing objects: 99% (219/220), 12.65 MiB | 97 KiB/s 12.65零件四处移动。当我退出进程并再次运行它时,它将以99%的速度恢复,但从未完成,与以前一样 它从来没有被成功推过。这是初始提交。发生这种情况是因为repo目录中有一个巨大的未识别文件。哎呀 编辑 挂起原因是文件上载时间过长。该文件不应该包含在推送中 编辑 虽然一个巨大的文件可能是这个问题背后的原因,但如果您不能

我试图
git push-u origin master
,它只是挂起在

Writing objects:  99% (219/220), 12.65 MiB | 97 KiB/s
12.65
零件四处移动。当我退出进程并再次运行它时,它将以99%的速度恢复,但从未完成,与以前一样


它从来没有被成功推过。这是初始提交。

发生这种情况是因为repo目录中有一个巨大的未识别文件。哎呀

编辑

挂起原因是文件上载时间过长。该文件不应该包含在推送中

编辑


虽然一个巨大的文件可能是这个问题背后的原因,但如果您不能忽略有问题的文件,或者只需要推送它,那么请按照答案进行操作。

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

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

  • mv A B
  • git克隆A
  • mvb/*A/
  • 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文件夹,其权限与repo存储在同一个驱动器上,但ssh的权限可能相同,即使您使用的是授权登录用户

    然后检查您是否拥有远程回购的正确写入权限

    例如:

    初始本地和远程回购

    git init /tmp/src
    git init --bare /tmp/dst
    cd /tmp/src
    
    向来源地添加远程回购

    src > git remote add dest /tmp/dst
    
    src > chmod -R 775 /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.
    
    Git挂起

    解决方案

    src > git remote add dest /tmp/dst
    
    src > chmod -R 775 /tmp/dst
    

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


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

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

    我在Windows 10机器上遇到了相同的问题,
    写入对象
    挂起,但情况略有不同

    我遇到的问题只是当我试图向存储库添加新文件时。如果我更新存储库中已经存在的文件,那么每次都可以正常工作,文件大小是否大并不重要。我主要是尝试添加新脚本

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

    attrib -r +s D:\foldername 
    
    为我解决了这个问题


    只是在这里发布,可能有人和我有同样的问题。

    对我来说唯一有效的解决方案是使用这个命令
    rm-rf.git*
    从我的项目中删除版本跟踪。
    然后为我的项目启动新版本跟踪。

    你想推到哪里?您使用的是SSH还是其他协议?设置
    http.postbuffer
    会有帮助吗?沃克的评论很容易被忽视。这对我有用,难以置信。这也为我做到了。现在是2018年。它是SSH,不是HTTP。而整个回购协议大约有1500亿美元。“远程”服务器是本地主机。别把吉特浪漫化了,伙计们,求你们了!;)您遇到了不同的症状。我的没有任何致命错误。天哪,谢谢你!把我的头发拔出来,这就解决了我的问题@HugoForte增加缓冲区似乎解决了我挂起的文件写入问题,但我的git推送从未完成(在
    写入对象后挂起:100%
    )——之前它挂起25%,所以这显然有帮助。然而,我仍然有“奇怪”的行为。我重新启动了我的系统,这似乎解决了问题…仅供参考…如果有人在增加缓冲区后仍遇到问题,重新启动我的系统对我的情况很有帮助(旧式解决方案尽管如此,但重新启动确实有帮助).谁能解释一下这个号码是从哪里来的吗?@Ryre它是500 MB上帝保佑你和Stackoverflow,如果没有,@TimoSolo,我会是一个彻底的失败者我为什么要这么做?我就是那个有问题的人,我记录了确切的修复方法。非常简单。是的,你的解决办法是解决这个问题。为了其他需要推送大文件的人,@hugo forte的答案解决了这个问题。你不必这么做,我只是认为这会帮助更多的人——本着这样的精神。问题不是“我如何承诺,然后推一个大文件?”。这是“我的git推送从未停止过。为什么?”如果你不希望推送会持续很久,那么你(和我一样)可能不是有意提交这么大的文件。@mattalxndr当接受的答案有1/8的选票时,你可能应该更改它。@mattalxndr两个答案都不是完美的。一个确定原因,另一个提供解决方案。理想的答案是找出原因,解释为什么会有给定的结果,并提供两种替代解决方案。在我看来,在目前的选择中,雨果·福特的答案更为优越,因为我