git - 无法通过 ssh 推送到远程 git repo,卡在 "Writing objects: 11%"

标签 git push freeze

我遇到了一个问题,在“写入对象”时尝试执行 git push 挂断了。这不是我在其他地方看到的 Windows 和 git-daemon 的常见情况。这是 Linux 到 Linux,使用 ssh。客户端和服务端的git版本都是1.7.8.6。

我已尝试执行以下操作:

  • 创建一个本地的空仓库并推送到那里——工作正常
  • 从本地仓库 pull 到本地仓库——工作正常
  • 将远程仓库克隆到本地机器——工作正常
  • git fsckgit gc 服务器和客户端 repos
  • 推送到预先存在的远程存储库——在 11% 时挂起写入对象
  • 创建空的远程存储库并推送到它——写入对象挂起在 2%

我可以设置一个环境变量来让 git 生成调试消息。那里没有任何用处。

我已经在 IRC 上与人们详细讨论过这个问题,并且我尝试过使用谷歌搜索。我们一事无成。任何人都可以帮我找出问题所在吗?

谢谢!

更新:根据某人的建议,我执行了一个 strace -F,它卡在了子进程中的 select() 上。我会提供整个跟踪,但 stackexchange 无法上传。无论如何,这是相关部分:

[pid 14414] getsockopt(3, SOL_SOCKET, SO_RCVBUF, [87872], [4]) = 0^M
[pid 14414] select(7, [3 4], [3], NULL, NULL) = 2 (in [4], out [3])^M
[pid 14414] read(4,  <unfinished ...>^M
[pid 14433] <... write resumed> )       = 8192^M
[pid 14433] write(1, "\262\36\237\265\234\n\332W\26\271.\250\271W\34\250N\34*\341\247R\21\177\\Dq\23\27\211\270\25"..., 8192) = 8192^M
[pid 14433] write(1, "Y\343}z\367\31y\321)\254\236na\274\347*\253\247\264d\25\213\364\243\331\242\236\3222U3\246"..., 8192 <unfinished ...>^M
[pid 14414] <... read resumed> "t\277\177\276\361\377\327U\361Re\f\347\300\27\3\255}E\363\2277\312p\356F\335U\345\336\250\273"..., 16384) = 16384^M
[pid 14414] write(3, "\210y\r\202\303`\222m\216\177x \354\216Y\322n\232l\273\237\214\352\32\r\261r\311\347\356\236\26"..., 16432) = 16432^M
[pid 14414] getsockopt(3, SOL_SOCKET, SO_RCVBUF, [87872], [4]) = 0^M
[pid 14414] select(7, [3], [3], NULL, NULL) = 1 (out [3])^M
[pid 14414] write(3, "\v\267\355\33\257\332\330\326\233\260;\223\212z\333\213\21'1\20\7\366\"f\253\373\0059\24\206C4"..., 5504) = 5504^M
[pid 14414] getsockopt(3, SOL_SOCKET, SO_RCVBUF, [87872], [4]) = 0^M
[pid 14414] select(7, [3], [], NULL, NULL <unfinished ...>^M
[pid 14433] <... write resumed> )       = ? ERESTARTSYS (To be restarted if SA_RESTART is set)^M
[pid 14433] --- SIGALRM {si_signo=SIGALRM, si_code=SI_KERNEL, si_value={int=1, ptr=0x1}} ---^M
[pid 14433] rt_sigreturn()              = 1^M
[pid 14433] write(1, "Y\343}z\367\31y\321)\254\236na\274\347*\253\247\264d\25\213\364\243\331\242\236\3222U3\246"..., 8192) = ? ERESTARTSYS (To be restarted if SA_RESTART is set)^M
[pid 14433] --- SIGALRM {si_signo=SIGALRM, si_code=SI_KERNEL, si_value={int=1, ptr=0x1}} ---^M
[pid 14433] rt_sigreturn()              = 1^M
[pid 14433] write(1, "Y\343}z\367\31y\321)\254\236na\274\347*\253\247\264d\25\213\364\243\331\242\236\3222U3\246"..., 8192) = ? ERESTARTSYS (To be restarted if SA_RESTART is set)^M
[pid 14433] --- SIGALRM {si_signo=SIGALRM, si_code=SI_KERNEL, si_value={int=1, ptr=0x1}} ---^M
[pid 14433] rt_sigreturn()              = 1^M
[pid 14433] write(1, "Y\343}z\367\31y\321)\254\236na\274\347*\253\247\264d\25\213\364\243\331\242\236\3222U3\246"..., 8192) = ? ERESTARTSYS (To be restarted if SA_RESTART is set)^M
[pid 14433] --- SIGALRM {si_signo=SIGALRM, si_code=SI_KERNEL, si_value={int=1, ptr=0x1}} ---^M
[pid 14433] rt_sigreturn()              = 1^M

最佳答案

问题是 ssh 中的错误。最近的一个版本出了问题,并且在大量传输过程中停滞不前。有一个解决方法。

修复方法是在 sshd_config 中设置“TcpRcvBufPoll no”。

http://forums.gentoo.org/viewtopic-t-925044-start-0-postdays-0-postorder-asc-highlight-.html

http://forums.gentoo.org/viewtopic-p-7036250.html

关于git - 无法通过 ssh 推送到远程 git repo,卡在 "Writing objects: 11%",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10740601/

相关文章:

matlab - MATLAB IDE 在显示非常大的数组时挂起时如何中断?

javascript - 如何将 .prettierignore 文件基于 .gitignore

javascript - 当尝试在变量上推送值时推送未定义而不是值

windows - hg 位桶 "does not appear to be a largefile store"

java - Vaadin 动态地将更改的数据反射(reflect)到所有用户的屏幕上

go - Golang在TCP上死锁。一段时间后写入

android-studio - 右键单击项目浏览器时,Android Studio卡住

java - Maven单独构建打包和Cucumber集成测试

linux - 如何检测子模块中父 Git 存储库的正确 GIT_DIR 和 GIT_WORK_TREE

git - 来自同一分支的迭代 pull 请求?