Git push是慢的还是有问题?

3
我曾经将许多相关代码分散在各处,现在我决定将它们整合到一个github仓库中。我不小心提交、推送、移动和删除了大于50MB的文件。我对git并不是很熟悉,所以做了很多事情,比如使用mv/rm而不是git mv/rm。我试图回顾过去并纠正这些错误,但我不确定是否已经把事情搞糊涂了。
自那时以来,每当我尝试推送时,都会出现以下提示:
-bash-4.1$ git push
Counting objects: 1288, done.
Delta compression using up to 8 threads.
Connection to github.com closed by remote host.
fatal: The remote end hung up unexpectedly
compressing objects:  87% (1060/1211)

但它似乎一直卡在那里。有没有办法判断是否存在问题,或者我只需要等待更长时间?

我尝试使用以下命令来增加发布缓冲区:

-bash-4.1$ git config --global http.postBuffer 157286400

但这似乎没有起到帮助作用。

为了让您了解存储库/文件的大小,我做了以下操作:

-bash-4.1$ du -sh *
126M    mg
4.0K    readme.md

-bash-4.1$ find ./ -type f -size +50M -exec ls -lh {} \;
-r--r--r-- 1 oc13378 emat13r 55M Oct 25 18:48 ./.git/objects/a6/c86199d33fac72d856d3381fe07239d7089b80
-r--r--r-- 1 oc13378 emat13r 65M Oct 25 19:00 ./.git/objects/d6/c82684b7db5939dbec6193d9a16b9b0954740c
-r--r--r-- 1 oc13378 emat13r 56M Oct 25 18:57 ./.git/objects/bd/0a85627a6fe53e0322ebf33c70d1ad1f26642b
-r--r--r-- 1 oc13378 emat13r 67M Oct 25 18:56 ./.git/objects/63/4209365d534cc6dd7d081c949b123df8052bd0
-r--r--r-- 1 oc13378 emat13r 60M Oct 25 18:55 ./.git/objects/2b/25a30d92e48a72e32d7062a4c5ffc5734fec94
-r--r--r-- 1 oc13378 emat13r 58M Oct 25 18:46 ./.git/objects/50/5495be51d3d8bd98b0c67a3ed41859fc92153f
-r--r--r-- 1 oc13378 emat13r 58M Oct 25 19:03 ./.git/objects/38/99700d5472df9442e118c82dd8fe9ee336bc5b
-r--r--r-- 1 oc13378 emat13r 52M Oct 25 18:44 ./.git/objects/b4/42ac818898e285c524e9300ecfa46ca53a2c3c
-r--r--r-- 1 oc13378 emat13r 54M Oct 25 19:00 ./.git/objects/4f/386fbc1389074f548a70a7a6f6e65df1a57710
-r--r--r-- 1 oc13378 emat13r 53M Oct 25 18:55 ./.git/objects/37/c25b249642f200c8e5c427d1c6d9b57c5ed089
-r--r--r-- 1 oc13378 emat13r 51M Oct 25 18:37 ./.git/objects/e9/54a09381e8e9a452a672886536718f73587e31
-r--r--r-- 1 oc13378 emat13r 52M Oct 25 18:37 ./.git/objects/b2/3ab90e379e2647c0bb9ccfdc6346b2c3d8df8f
-r--r--r-- 1 oc13378 emat13r 57M Oct 25 18:59 ./.git/objects/ac/ca72cfb9a4537828fd747b0a05ec0a79efdc65
-r--r--r-- 1 oc13378 emat13r 55M Oct 25 18:47 ./.git/objects/2e/da077ed31886e677dcb2b4bc6b1abe340527b6
-r--r--r-- 1 oc13378 emat13r 56M Oct 25 18:41 ./.git/objects/2e/d7ea9d06803d85ce9504c69619c516c2bac928
-r--r--r-- 1 oc13378 emat13r 51M Oct 25 18:45 ./.git/objects/04/b1e3fdcf9bc74c696f77c3b7d5f0d2fa5be992
-r--r--r-- 1 oc13378 emat13r 59M Oct 25 18:57 ./.git/objects/d5/355a991c4812379649e94123feb518160cc6cb
-r--r--r-- 1 oc13378 emat13r 53M Oct 25 18:56 ./.git/objects/ec/93271bb4b898438b2c90b7048a26f8dc54b553
-r--r--r-- 1 oc13378 emat13r 63M Oct 25 18:47 ./.git/objects/85/e33df7c1882788b12ee866d8c38427bd22aa44
-r--r--r-- 1 oc13378 emat13r 55M Oct 25 18:48 ./.git/objects/ce/70d6d87e7d810c570da3e2e534213653c05de6
-r--r--r-- 1 oc13378 emat13r 57M Oct 25 18:37 ./.git/objects/7a/abe86d346247dceadb0324696a044331f56440
-r--r--r-- 1 oc13378 emat13r 51M Oct 25 18:46 ./.git/objects/2a/d85020500a36387d60046c9e5ddf500aa44286
-r--r--r-- 1 oc13378 emat13r 59M Oct 25 18:59 ./.git/objects/fb/6928f2f569361935db50d4f0ed8ece5feaf6f1
-r--r--r-- 1 oc13378 emat13r 54M Oct 25 19:01 ./.git/objects/c6/c2843b3b40bf6c6b7b6f974f004009b8e45e4e
-r--r--r-- 1 oc13378 emat13r 56M Oct 25 18:47 ./.git/objects/fe/0b521c082fb0290bb011c73daba372b4805db4
-r--r--r-- 1 oc13378 emat13r 61M Oct 25 19:02 ./.git/objects/5a/373c53b589d429eff09e1d2a18d9b7f85658cf
-r--r--r-- 1 oc13378 emat13r 53M Oct 25 18:37 ./.git/objects/bb/e662205d31a9ccbd2d755fc46f99aae4bd0fe2
-r--r--r-- 1 oc13378 emat13r 51M Oct 25 18:37 ./.git/objects/69/32e59d33eae1e13357d0e048dee3f77b97ba72

最后一件事是,这台电脑很老了,内存不多。这可能会成为问题吗?

-bash-4.1$ free
              total       used       free     shared    buffers     cached
Mem:       8059876    1112512    6947364          0       6372     927848
-/+ buffers/cache:     178292    7881584
Swap:      4194300      31156    4163144
-bash-4.1$ free -m
              total       used       free     shared    buffers     cached
Mem:          7870       1086       6784          0          6        906
-/+ buffers/cache:        174       7696
Swap:         4095         30       4065

我的最近一次尝试以失败告终:

-bash-4.1$ git status
# On branch master
# Your branch is ahead of 'origin/master' by 5 commits.
#
nothing to commit (working directory clean)
-bash-4.1$ git push
Counting objects: 1288, done.
Delta compression using up to 8 threads.
Connection to github.com closed by remote host.
fatal: The remote end hung up unexpectedly
error: pack-objects died of signal 9)   
error: pack-objects died with strange error
error: failed to push some refs to 'git@git-uni:OliCUoB/wc.git'
4个回答

3

最后一件事是电脑老旧,没有太多RAM。这可能是个问题吗?

是的。 signal 9 意味着您的打包过程(构建一个薄包以发送到GitHub)已被 "OOM killer" 杀死。另请参见 Git out of memory and then fatal - early EOF(这是一种服务器内存不足的情况,因此略有不同)。

您可以尝试在自己的端上调整打包参数:

  • core.packedGitWindowSize
  • core.packedGitLimit
  • pack.window
  • pack.depth
  • pack.windowMemory
  • pack.deltaCacheSize
  • pack.threads(与内存无关,但更多线程需要更多 RAM)

但最好的办法是给您的机器更多的内存(真正的RAM、交换/分页空间或两者兼备)。


2

这对我很有帮助

git reset origin/branchName

git add -a, git commit -m "commit message"

git push


0

我在使用git时也遇到了一些意外的操作缓慢。然后我使用了

git prune


0

一个额外的设置可以帮助加速 git push

git -c push.useBitmaps=false push

随着Git 2.38 (2022年第三季度)的到来, "git push"(man)有时在使用可达性位图时执行效果较差,即使在其他操作受到位图帮助的存储库中也是如此。
引入了 push.useBitmaps 配置变量,允许仅对 git push 禁用使用可达性位图。

请查看提交 82f67ee(2022年6月17日)由Kyle Zhao (yefengzkk)提交。
(由Junio C Hamano -- gitster --合并于提交 81705c4,2022年7月13日)

send-pack.c:添加配置项push.useBitmaps

签名作者:Kyle Zhao

可达性位图旨在加速克隆或提取过程中生成打包的“计数对象”阶段。
它们并不是为了优化通过git push发送小主题分支的Git客户端而设计的。
在某些情况下(请参见this thread),在"git push"期间使用可达性位图(man)可能会导致显着的性能退步。

添加一个新的“push.useBitmaps”配置变量,允许用户告诉“git push”不要使用位图。
我们已经有了控制使用位图的“pack.bitmaps”,但是单独的配置变量允许可达性位图仍然在其他区域中使用,例如“git upload-pack(man),同时仅禁用git push中的位图。

git config现在在其手册页面中包括以下内容:

push.useBitmaps

如果设置为“false”,即使pack.useBitmaps为“true”,也禁用位图用于“git push”,而不会阻止其他git操作使用位图。
默认值为true。


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