我正在尝试执行git push -u origin master
,但它一直卡在这里:
Writing objects: 99% (219/220), 12.65 MiB | 97 KiB/s
12.65
部分变化不定。当我退出进程并重新运行时,它会在 99% 处恢复,但永远无法完成,与之前相同。
它从未成功推送。这是初始提交。
我正在尝试执行git push -u origin master
,但它一直卡在这里:
Writing objects: 99% (219/220), 12.65 MiB | 97 KiB/s
12.65
部分变化不定。当我退出进程并重新运行时,它会在 99% 处恢复,但永远无法完成,与之前相同。
它从未成功推送。这是初始提交。
我遵循了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')
524288000
是从哪里来的吗? - Ryre这是因为在仓库目录中有一个巨大的、不能被忽略的文件导致的。哎呀。
编辑
卡住的原因是该文件上传花费了很长时间。实际上,这个文件本不应该被包括在推送中。
编辑
虽然一个巨大的文件可能是导致此问题的原因,但如果你无法忽略这个文件或者必须将其推送,那么请参考这个答案。
我曾遇到写入对象 %16 时卡住然后崩溃的问题。我通过保存当前更改并克隆一个新仓库,然后将修改后的文件复制到其中来解决了这个问题。
例如,假设当前仓库为 A,则您所需执行的操作如下:
mv A B
git clone A
mv B/* A/
rm -rf B
然后提交和推送就好了。它会将移动的文件识别为已修改的文件 :)
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.
Git卡住了
解决方案
src > chmod -R 775 /tmp/dst
在我的情况下,问题出在文件的大小上。通过添加一个包含所需扩展名的 .gitignore 文件,我能够忽略大部分不需要推送的文件。
git clean -f -n
解决了我的问题。有许多未被检测到的未跟踪文件。
但是要小心,因为这会删除您目录中的文件。
git clean
会清除所有未提交的文件。 -f
标志强制运行该命令,而 -n
则使其成为干运行并告诉您将要删除哪些文件。 因此... 您将看到哪些文件被删除。 所以实际上,@Jazimov,您通过在其前面放置 -f 标志来撤消 -n 标志。 https://git-scm.com/book/id/v2/Git-Tools-Stashing-and-Cleaning#_git_clean - unixcornattrib -r +s D:\foldername
对我来说解决了这个问题。
只是在这里发布一下,也许有人和我遇到了同样的问题。
http.postbuffer
可以帮助吗?https://dev59.com/e2w15IYBdhLWcg3wFHtZ#6849424 - VonC