Skip to content

🔰 解决Gibhub git push超时、无法提交的问题

🕒 Published at:

解决Gibhub git push超时、无法提交的问题

最近git push指令又不能工作了,马上测了一下IP,发现github.global.ssl.fastly.net这个域名,除了台湾宝岛那里,基本都不能访问。(注:测试地址https://ping.chinaz.com/github.global.ssl.fastly.net)

image-20221222105336458

这个测试仅是一家云商服务器的结果,可能换一家云商,结果就不一样了,数据仅供参考。

那么解决Github仓库不能送拉的问题呢?

使用这个网址工具(https://ping.chinaz.com/)依次测试下面三个域名的可用IP:

  • github.com
  • github.global.ssl.fastly.net
  • assets-cdn.github.com

得用可用IP后,修改hosts文件(例如macOS的/etc/hosts),强制相关域名使用指定IP:

bash
39.102.194.95 github.com
151.101.1.194 github.global.ssl.fastly.net
185.199.108.153 assets-cdn.github.com
39.102.194.95 github.com
151.101.1.194 github.global.ssl.fastly.net
185.199.108.153 assets-cdn.github.com

完成修改后,需要重启本机网络,指令重启方法因系统因异:

  • macOS系统:sudo ifconfig en0 down && sudo ifconfig en0 up
  • Windows系统:ipconfig /flushdns
  • Linux系统:/etc/init.d/networking restart

如果不使用指令,用鼠标点击Wifi或本地网络,手动关闭、重连也可以达到同样的效果。重启后,git指令基本就可以工作了。

但是问题到这里还没有结束。

指令执行时都访问了哪些域名?

git push指令执行时,都在背后访问了哪些域名?我们怎么知道一个指令的成功执行,到底需要能够访问哪些域名地址呢?

这与具体指令要做的事情有关,在进行git操作时,github.com域名是必连的,github.global.ssl.fastly.net域名是为了处理ssl安全连接的,而assets-cdn.github.com域名是cdn加速域名,在github提交中暂时用不到。

除了分析指令本身的功能或源码之外,还可以在本地使用网络监测工具。例如netstat指令:

$ netstat -a | grep "github"
tcp4       0      0  192.168.31.224.50744   github.com.ssh         SYN_SENT
$ netstat -a | grep "github"
tcp4       0      0  192.168.31.224.50744   github.com.ssh         SYN_SENT

有没有防墙提交工具?

有没有一个自动防墙提交的工具呢?这个工具最好可以封装成一个指令,例如github_safe_push。github自有的CLI工具指令gh并不能担负这个职责。

在网络上搜索了一下,暂时没有找到具有这样功能的工具。从理念上讲,这样的工具应该是可以实现的,使用Python代码先查询可用域名,继而进行网络设置,最后调用原生的git push指令提交代码。

使用国内CSDN的缓存服务

2022-12-24更新:

CSDN为国内程序员提供了一项Github缓存、加速服务

GitHub 缓存服务是 CSDN 为开发者提供的一项代码仓库加速服务。

如果感兴趣,可以从这里了解:https://gitcode.net/gitcode/help-docs/-/wikis/docs/user/project/repo/repo-mirror