git pull/clone在一个网络上的版本列表后如何挂起,在其他网络上如何工作:如何调试和修复?

git pull/clone在一个网络上的版本列表后如何挂起,在其他网络上如何工作:如何调试和修复?,git,ubuntu,router,Git,Ubuntu,Router,在我的ubuntu笔记本电脑上,git pull在到达rev list命令时会冻结,请参见下面的输出: GIT_TRACE=1 GIT_CURL_VERBOSE=1 git pull --verbose trace: exec: 'git-pull' '--verbose' trace: run_command: 'git-pull' '--verbose' trace: built-in: git 'rev-parse' '--git-dir' trace: built-in: git 're

在我的ubuntu笔记本电脑上,git pull在到达rev list命令时会冻结,请参见下面的输出:

GIT_TRACE=1 GIT_CURL_VERBOSE=1 git pull --verbose
trace: exec: 'git-pull' '--verbose'
trace: run_command: 'git-pull' '--verbose'
trace: built-in: git 'rev-parse' '--git-dir'
trace: built-in: git 'rev-parse' '--is-bare-repository'
trace: built-in: git 'rev-parse' '--show-toplevel'
trace: built-in: git 'ls-files' '-u'
trace: built-in: git 'symbolic-ref' '-q' 'HEAD'
trace: built-in: git 'config' '--bool' 'branch.upgrade-to-rails3.rebase'
trace: built-in: git 'config' '--bool' 'pull.rebase'
trace: built-in: git 'rev-parse' '-q' '--verify' 'HEAD'
trace: built-in: git 'fetch' '-v' '--update-head-ok'
trace: run_command: 'ssh' 'my_repo@mydomain.com' 'git-upload-pack '\''/home/mana/git/chc.git'\'''
trace: run_command: 'rev-list' '--objects' '--stdin' '--not' '--all' '--quiet'
同一网络上的其他计算机(windows和mac)可以从同一个repo(位于专用服务器上)获取数据。然后我把我的笔记本电脑带到另一个网络,工作正常

我尝试过的事情:

  • 将eth0上的MTU设置为1492(正如我看到的,对于一些人来说,默认值1500会导致问题)
  • 确认我可以成功地ssh到服务器
  • 从以前的挂起尝试中清除挂起的sshd进程
  • 远程服务器上的git gc

那么,在one网络的路由器中,加上我特定版本的ubuntu可能会导致这种情况,我如何调试它呢?

如果你怀疑ssh有什么问题,为什么不创建一个脚本my ssh:

#!/bin/sh

ssh -v $@
然后

这样,您就可以说出进程在ssh中挂起的位置


(这应该是一个注释,但我无法格式化代码!)

我的Mac上也有类似的问题,ssh的某些git命令可以工作,其他命令似乎挂在终端上而没有任何响应

git remote -v show origin  -- would hang
git push origin            -- would work
Swithing router,通过使用我的手机作为无线接入点,这两个命令都有效

解决方案:
  • 如果不存在,请在用户目录中创建文件(我的不存在)

  • 签署:

    Host *
      IPQoS 0x00
    
  • 我不确定是否需要重启ssh进程,我认为不需要

  • 为什么? 路由器中服务质量的默认设置。我在书中找到了答案和解释

    /Users/[your_user]/.ssh/config
    
    Host *
      IPQoS 0x00