如何在Git 上传大文件

本文介绍了如何处理在GitHub上上传大文件时遇到的限制,包括GitLFS的使用、调整http.postBuffer配置以适应大文件上传,以及通过修改host文件和使用云存储或在线文件分享工具来解决问题。
摘要由CSDN通过智能技术生成

Git 上传大文件可能会遇到以下几种报错和问题:

GitHub 对提交的文件大小做了限制,GitHub 会阻止超过 100 MB 的推送(单文件)。

GitHub 对每个文件的大小限制为 100 MB,即一个文件的内容不能超过 100 MB。如果用户尝试上传一个大于 100 MB 的文件,GitHub 会拒绝接收,并提示用户使用 Git Large File Storage (Git LFS) 来管理大文件。Git LFS 是一个 Git 的扩展工具,它可以将大文件存储在另外的服务器上,而在 Git 仓库中只保留文件的引用。这样,用户可以在 Git 仓库中跟踪和控制大文件,而不影响 Git 的性能和效率。

GitHub 对每个仓库的大小限制为 1 GB,即一个仓库中的所有文件和历史记录的总大小不能超过 1 GB。如果用户的仓库超过了这个限制,他们将无法向仓库中推送更多的更改。GitHub 建议用户保持仓库的大小在 500 MB 以下,以便于克隆和同步。

GitHub 的域名被限制了,导致 git 的速度最高只能达到 20KB/S。

GitHub 作为一个代码托管平台,使用了一些域名来提供其服务,例如 github.com, github.global.ssl.fastly.net, githubusercontent.com 等。这些域名需要通过 DNS 服务器来解析成对应的 IP 地址,才能让用户访问到 GitHub 的服务器。但是,有些 DNS 服务器可能会对 GitHub 的域名进行限制或者干扰,导致用户无法正常访问 GitHub,或者访问速度很慢。

网络环境不稳定或者带宽不足,导致上传速度受到影响。

网络环境是指用户所处的网络的质量和状态,包括网络的稳定性,可靠性,安全性,延迟,丢包等。网络环境受到很多因素的影响,例如网络设备的性能,网络协议的选择,网络拥塞的程度,网络攻击的威胁等。如果网络环境不稳定,那么用户的上传请求可能会被中断,延迟,或者丢失,导致上传速度降低或者失败。

带宽是指用户所使用的网络的传输速率的上限,也就是网络能够在单位时间内传输的数据量的大小。带宽受到很多因素的影响,例如网络运营商或者互联网服务提供商(ISP)的服务质量,用户的套餐选择,用户的网络共享情况,用户的网络流量消耗等。如果带宽不足,那么用户的上传请求可能会被限制,拥塞,或者抢占,导致上传速度降低或者失败。

针对这些原因,您可以尝试以下几种解决方案:

使用 Git LFS 上传大文件

Git LFS(Large File Storage)是一个 Git 的扩展工具,用于管理大文件。它通过将大文件存储在 Git 仓库之外,并在仓库中保留文件的引用,来解决 Git 对大文件的处理效率和限制问题。

以下是关于 Git LFS 的一些重要概念和使用方法:

  • 安装 Git LFS:首先,你需要在本地系统上安装 Git LFS。可以从 Git LFS 官方网站(6)下载适合你操作系统的安装程序,并按照说明进行安装。

    git lfs install
    

    这将在当前仓库中启用 Git LFS。

  • 初始化 Git LFS:在你的 Git 仓库中,使用以下命令来初始化 Git LFS:

    git lfs track "*.ext"
    

    *.ext 替换为你要跟踪的文件类型的模式,例如 *.mp4*.zip。Git LFS 将会为匹配的文件类型启用跟踪。

  • 跟踪大文件:使用以下命令告诉 Git LFS 跟踪特定文件类型的大文件:
  • 添加和提交大文件:使用常规的 Git 命令 git addgit commit 将大文件添加到 Git LFS 管理中。例如:
  • 推送和拉取大文件:使用常规的 git pushgit pull 命令来推送和拉取包含大文件的提交。Git LFS 会自动处理大文件的上传和下载。

    git add large_file.ext
    git commit -m "Add large file using Git LFS"
    

    这将将大文件添加到 Git LFS 管理,并创建一个包含大文件引用的提交。

通过使用 Git LFS,你可以更有效地管理大文件,并避免 Git 对大文件的限制和性能问题。请注意,你需要确保你的 Git 服务器和其他协作者也已正确配置和支持 Git LFS,以便顺利共享和协作处理大文件。

      优点

  • Git LFS 可以减少 Git 仓库的大小,提高克隆和推送的速度。因为 Git LFS 只在仓库中存储文件的引用,而不是文件本身,所以 Git 仓库的体积会大大减少,从而节省下载仓库的带宽和时间。
  • Git LFS 可以保持对大文件的版本控制能力。因为 Git LFS 会在仓库中记录文件的引用和版本信息,所以可以对大文件进行版本管理,回退,合并等操作,就像对普通文件一样。
  • Git LFS 可以与 Git 的工作流程无缝集成。因为 Git LFS 是一个 Git 的扩展工具,所以可以使用常规的 Git 命令来添加,提交,推送,拉取大文件,而不需要额外的学习成本。Git LFS 也可以与一些 Git 的图形界面工具和托管服务兼容,例如 GitHub,GitLab,SourceTree 等。

    缺点

  • Git LFS 需要额外的存储空间和服务器支持。因为 Git LFS 会将大文件存储在单独的服务器上,所以需要有足够的存储空间和网络带宽来存储和传输大文件。同时,也需要确保 Git 服务器和其他协作者都支持和配置了 Git LFS,否则可能导致文件丢失或无法访问的问题。
  • Git LFS 背离了 Git 的去中心化的设计理念。因为 Git LFS 会依赖于远程服务器来存储和获取大文件,所以本地仓库变成了一个不完整的仓库,操作变得极度依赖于网络。如果网络不稳定或者服务器出现故障,那么大文件的上传和下载就会受到影响,甚至无法进行。
  • Git LFS 不适用于一些需要频繁修改和迭代的大文件,例如游戏开发或虚拟制作中的美术资源。因为 Git LFS 会为每个版本的大文件创建一个新的引用和存储对象,所以如果大文件经常变化,那么 Git LFS 的存储空间和网络带宽的消耗就会很大。同时,Git LFS 也不与一些流行的美术和设计软件集成,也不提供一些方便的文件锁定和可视化功能,所以对于非编码人员来说,使用 Git LFS 可能会遇到一些困难和挑战。

修改 host 文件

host 文件是一个用于将域名映射到 IP 地址的文件,它可以用于修改或绕过 DNS 解析,或者加速网络访问。如果你发现 GitHub 的域名被限制了,或者访问速度很慢,你可以尝试修改 host 文件,将 GitHub 的域名指向一个速度较快的 IP 地址。

以下是修改 host 文件的步骤:

199.232.69.194 github.global.ssl.fastly.net

这将把 github.global.ssl.fastly.net 这个域名映射到 199.232.69.194 这个 IP 地址,从而加速访问 GitHub 的速度。

通过修改 host 文件,你可以提高访问 GitHub 的速度,或者解决一些网络问题。请注意,你需要定期更新你的 host 文件,以保持最新的 IP 地址,否则可能导致访问失败或者速度变慢。

  • 找到 host 文件的位置。不同的操作系统有不同的 host 文件的位置,以下是一些常见的位置:

    • Windows:C:\Windows\System32\drivers\etc\hosts
    • Linux:/etc/hosts
    • Mac OS:/private/etc/hosts
  • 打开 host 文件。你需要使用管理员权限或者 root 权限来打开和编辑 host 文件,否则可能无法保存修改。你可以使用任何文本编辑器来打开 host 文件,例如 Notepad、Vim 或者 Nano。

  • 在文件末尾添加以下内容,其中 199.232.69.194 是一个示例 IP,你可以根据实际情况选择一个合适的 IP 地址:

  • 保存并退出 host 文件。你需要保存你的修改,并关闭文本编辑器。

  • 刷新 DNS 缓存。你需要刷新你的 DNS 缓存,让你的修改生效。不同的操作系统有不同的刷新 DNS 缓存的方法,以下是一些常见的方法:

    • Windows:在命令提示符中运行以下命令:

      ipconfig /flushdns
      
    • Linux:在终端中运行以下命令:

      sudo /etc/init.d/nscd restart
      
    • Mac OS:在终端中运行以下命令:

      sudo killall -HUP mDNSResponder
      

优点

  • ​​​​修改 Host 文件可以访问被封锁或者被污染的网站。有些网站,因为某些原因,可能被 DNS 服务器屏蔽或者解析错误,导致无法正常访问。通过修改 Host 文件,将网站的域名指向正确的 IP 地址,可以绕过 DNS 的限制,访问被封锁或者被污染的网站。 
  • 修改 Host 文件可以提高网络性能。有些网站,因为服务器的负载或者地理位置,可能访问速度很慢或者不稳定。通过修改 Host 文件,将网站的域名指向一个速度较快或者较近的 IP 地址,可以加速网络访问,减少延迟和丢包。

缺点

  • 修改 Host 文件可能会造成一些安全隐患。有些恶意软件或者网站,可能会篡改或者污染我们的 Host 文件,将一些常用网站的域名指向错误或者危险的 IP 地址,从而导致我们访问到一些假冒或者恶意的网站,泄露我们的个人信息或者财产。因此,我们需要定期检查和清理我们的 Host 文件,避免被恶意利用。
  • 修改 Host 文件可能会造成一些兼容性问题。有些网站,可能会经常更换或者更新他们的 IP 地址,或者使用一些动态的 IP 地址,或者使用一些负载均衡或者 CDN 的技术,来提高他们的服务质量和安全性。如果我们修改了 Host 文件,将网站的域名固定到一个静态的 IP 地址,可能会导致我们无法访问到最新或者最优的 IP 地址,或者无法访问到一些子域名或者分区的内容,或者无法享受到一些特殊的服务或者优惠。因此,我们需要及时更新和同步我们的 Host 文件,避免被过时或者失效。
  • 修改 Host 文件可以实现一些自定义功能。有些情况下,我们可能需要对一些网站进行一些自定义的操作,例如屏蔽广告或者恶意网站,或者建立局域网内的映射关系,或者调试测试一些网站的功能。通过修改 Host 文件,可以实现这些功能,而不需要安装额外的软件或者插件。

调整 http.postBuffer 数值

http.postBuffer 是一个 Git 的配置选项,用于设置每次上传或下载的数据量的上限。默认情况下,http.postBuffer 的值是 1 MB,这意味着每次上传或下载的数据量不能超过 1 MB。如果你要上传或下载的文件很大,或者你的网络环境不稳定或者带宽不足,你可能会遇到以下几种错误:

  • error: RPC failed; curl 56 OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 10054
  • error: RPC failed; curl 18 transfer closed with outstanding read data remaining
  • error: RPC failed; curl 92 HTTP/2 stream 0 was not closed cleanly: PROTOCOL_ERROR (err 1)

为了解决这些错误,你可以尝试将 http.postBuffer 的数值调整到 GitHub 服务对应的单次上传大小配置,例如 500 MB。你可以使用以下命令进行设置:

git config --global http.postBuffer 524288000

这将将 http.postBuffer 的数值设置为 500 MB,并应用于所有的 Git 仓库。

git config http.postBuffer 524288000

这将将 http.postBuffer 的数值设置为 500 MB,并仅应用于当前的 Git 仓库。

通过调整 http.postBuffer 的数值,你可以提高上传或下载大文件的成功率,或者加快上传或下载的速度。请注意,你需要根据你的实际情况选择合适的数值,过大或过小的数值都可能导致问题。

使用其他工具上传大文件

如果你实在无法使用 Git 上传大文件,或者你觉得使用 Git 太麻烦,你还可以使用一些其他的工具来上传大文件。以下是一些常见的工具和方法:

  • 使用云存储服务。你可以使用一些云存储服务,如 Google Drive、Dropbox、OneDrive 等,来上传非常大的文件,并且访问速度非常快。当你需要传送一个 100 GB 的文件时,你可以将文件上传到云存储服务上,并将下载链接分享给接收方。这样,你不需要担心文件大小的限制,也不需要安装任何额外的软件。你只需要有一个云存储服务的账号,以及足够的存储空间和网络带宽。

  • 使用在线文件分享或快传网站。你可以使用一些在线文件分享或快传网站,如小鹿快传、微信文件传输助手网页端等,来上传和下载大文件。这些网站可以让你免费上传和下载大文件,而且速度较快,操作简单。你只需要将文件拖拽到网页上,然后等待上传完成,就可以得到一个下载链接或二维码。

  • 12
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

永远的图灵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值