URL
status
type
date
slug
summary
tag
category
password
icon
在git push的时候,由于GFW的影响,经常会出现各种各样的问题,这篇文章将会记录一些在使用 Git 过程中经常会遇到的错误及其解决办法
错误 1
【解决办法】
这种情况可能是网络波动引起的,可以尝试更换网络环境或者多试几次
错误 2
【解决办法】
这种情况可能是权限验证错误引起的,可以尝试卸载 Git 凭证管理器后重装
错误 3
【解决办法】
这种情况可能是 SSL 验证失败导致的,我们可以直接禁止 SSL 验证
官网上关于
http.sslVerify
的说明如下:Whether to verify the SSL certificate when fetching or pushing over HTTPS. Defaults to true. Can be overridden by theGIT_SSL_NO_VERIFY
environment variable.通过 HTTPS 抓取和推送时是否进行 SSL 验证。默认为 true。可以通过环境变量GIT_SSL_NO_VERIFY
进行重写。
错误 4
【解决办法】
- 这种情况有可能是缓存过小引起的,我们可以尝试增大缓存(缓存大小根据实际情况设置)
http.postBuffer
实际上做了什么?Git 官网上有一段相关的说明:Maximum size in bytes of the buffer used by smart HTTP transports when POSTing data to the remote system. For requests larger than this buffer size, HTTP/1.1 and Transfer-Encoding: chunked is used to avoid creating a massive pack file locally. Default is 1 MiB, which is sufficient for most requests.使用 smart HTTP 协议向远程 post 数据时,缓存区的最大大小,单位为 byte。对大于这个缓存大小的请求,会使用 HTTP/1.1 和 Transfer-Encoding: chunked 避免在本地创建一个庞大的打包文件。默认为 1 MiB,对于大多数请求而言已经足够。Note that raising this limit is only effective for disabling chunked transfer encoding and therefore should be used only where the remote server or a proxy only supports HTTP/1.0 or is noncompliant with the HTTP standard. Raising this is not, in general, an effective solution for most push problems, but can increase memory consumption significantly since the entire buffer is allocated even for small pushes.注意,提高这个限制只对禁用分块传输的编码有效,因此只应在远程服务或代理只支持 HTTP/1.0 或不符合 HTTP 标准的情况下使用。一般来说,提高这个限制对大多数推送问题不是一个有效的解决方案,但会大大增加内存消耗,因为即使对于小规模的推送也会分配整个缓冲区。
- 这种情况也可能是网络波动导致的,我们可以尝试取消相关的网络限制
http.lowSpeedLimit
和 http.lowSpeedTime
实际上做了什么?官网上有一段相关的说明:If the HTTP transfer speed is less than http.lowSpeedLimit for longer than http.lowSpeedTime seconds, the transfer is aborted. Can be overridden by the GIT_HTTP_LOW_SPEED_LIMIT and GIT_HTTP_LOW_SPEED_TIME environment variables.若 HTTP 传输速度小于 http.lowSpeedLimit 或传输时间大于 http.lowSpeedTime,那么该传输就会中断。可以通过环境变量GIT_HTTP_LOW_SPEED_LIMIT
和GIT_HTTP_LOW_SPEED_TIME
进行重写。
- 如果传输的文件实在太大,可以试试增大压缩率(压缩率大小根据实际情况设置)
core.compression
实际上做了什么?官网上有一段相关的说明:An integer -1…9, indicating a default compression level. -1 is the zlib default. 0 means no compression, and 1…9 are various speed/size tradeoffs, 9 being slowest. If set, this provides a default to other compression variables, such as core.looseCompression and pack.compression.用一个整数 -1 … 9 表示压缩级别。-1 表示使用 zlib 默认值。0 意味着不压缩,1 … 9 是压缩速度/压缩大小的权衡,9 压缩速度最慢/压缩大小最小。如果这个值被设置,那么将会给其它压缩相关的变量提供一个默认值,例如 core.looseCompression 和 pack.compression。
- 如果有多次提交一起推送,可以试试分多次推送【重要】
错误 5
这种问题很可能是由于之前使用科学上网时,手动设置了网络代理导致的。
【解决办法】
- 首先,在网络设置中关闭代理。
- 然后,在终端执行以下命令:
- 如果全局环境变量中包含以下内容:
- 则执行以下命令:
- 完成后,尝试执行 git clone 命令。
如果问题仍未解决,请继续以下步骤:
- 修改 Git 配置文件。配置文件通常位于 home 文件夹下,默认在根目录。
~/.gitconfig
- 删除该文件中的所有内容(这通常不会造成问题)。
- 再次尝试执行 git clone 命令。
如果问题依然存在:
- 在 home 文件夹中找到 ~/.bashrc 文件。
- 检查该文件中是否包含 http_proxy 和 https_proxy 设置,如果有,请删除它们。
- 作者:Cloud
- 链接:https://cloud09.xyz/article/126b58d0-50e3-80cc-8b26-d58de2db3d47
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。