11

好的,我有一个问题,一周以来我都无法解决。我使用 git(在 github 上)来存储我的项目。最近我在其中添加了一些新文件没有问题,但是当我使用“git push”时出现超时错误。

我使用 Ubuntu 12.04,带有 ssh(默认)和 https。

因此,我决定制作 depo(git clone)的新副本。在此之后,我修改了现有文件,提交并推送它......成功!

所以,我添加了其他人(在新副本中),提交并推送它们。问题又来了:无法推送这是控制台输出:

time git push
Counting objects: 13, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (11/11), done.
Writing objects: 100% (11/11), 16.61 KiB, done.
Total 11 (delta 2), reused 0 (delta 0)
^C

real    7m59.383s
user    0m0.008s
sys 0m0.004s

我真的不明白我在这里做错了什么。我在其他depo,同样的问题,但我的合作者没有任何麻烦。

我删除了 git,然后重新安装它,没有任何变化。

如果你有任何想法来解决这个问题。

编辑 1

git remote -v

origin  git@github.com:Krozark/projet_compilation.git (fetch)
origin  git@github.com:Krozark/projet_compilation.git (push)

编辑:解决方案

sudo ifconfig [wlan0] mtu 1460 (lower than 1500)
4

3 回答 3

11

我看到一个同事遇到的这个完全相同的问题,它与 SSH 相关的网络,我们当时使用的是 VPN 连接,结果是网络 MTU 设置太高(如果我没记错的话是 1492),我们修改了较小的值,直到它开始工作。所以似乎与网络数据包拆分有关。

不确定这是否适合您,尽管尝试将您的网络 MTU 更改为较低的值以查看它是否有效并没有什么坏处。

当然,如果这是 Github 方面的问题,这不会是一个因素(你可以创建一个新的 repo 并向上推这一事实让我相信它与 MTU 无关)。

于 2013-01-02T13:49:27.907 回答
3

正如您所建议的那样,固定您的 MTU 可以有效地缓解问题,我建议您使用更有针对性的解决方案。

iptables -t mangle -I OUTPUT 1 -o wlan0 -d 207.97.227.239 \
    -p tcp --dport 22 --tcp-flags SYN,RST SYN -j TCPMSS --set-mss 1420

这劫持了与服务器的初始 TCP 协商(仅适用于 github.com 的 IP 上的 SSH),并强制 MSS 为 1420。这实际上与设置 MTU 相同,但更具选择性。在某些情况下,您无法轻松保存 MTU 更改,并且每次关闭/启动界面时都需要重新应用它,这很好。

MSS 需要比 MTU 小 40 以允许 40 字节的 TCP 标头 + 数据段(MSS 是最大段大小)。

需要执行此类操作(即,将 MTU 降至 1500 以下)的最常见原因是 VPN 和隧道。PMTU 旨在解决这个问题,但它在太多情况下都失败了,让您需要手动调整某些路径的 MTU。使用 iptables 规则允许您针对不同的问题路径以不同的方式定制流量,而不是强制您将 MTU 设置为所有路径的最低公分母。这样做的问题在于,您会通过增加标头与数据的比率来慢慢减少有效带宽。

于 2013-01-04T06:28:45.340 回答
2

如果本地很好(即您的 git 和 ssh 工作正常),那么它应该是远程端的问题:

检查GitHub 状态

今天

3:22 UTC 我们正在调查我们的一个文件服务器的问题,少数存储库不可用。

您可能会受到 GitHub 上提到的当前经常性访问问题的影响。


或者是连接问题(例如缺少 VPN 路由

于 2013-01-02T13:45:00.037 回答