解决git无法上传大文件(50MB)
解决方法
使用LFS解决GitHub无法上传大于50MB的文件
LFS简介
Git LFS(Large File Storage)是 Git 的一个扩展,用于管理大型文件,如二进制文件、图像、音频和视频文件等。它的主要目的是解决 Git 对大型二进制文件的版本控制和存储问题。通常情况下,将大型二进制文件纳入 Git 版本控制会导致存储和性能方面的问题,因为 Git 不是为处理这些文件而设计的。
详细步骤
1、Windows下载安装LFS。下面是官网https://git-lfs.com/,在这里下载好后安装,会自动检测电脑的git信息并登录。
在git里用下面命令初始化:
git lfs install
2、找到你的本地仓库,比如我的网址:E:\GitHub\sfssa.github.io,在这个文件夹内点击鼠标右键选择"git bash here",输入下面指令:
git lfs track "*.zip"
这条命令是追踪所有以.zip为结尾的文件,然而当我在追踪时却遇到了问题如下:
这是由于我的配置文件出了问题,输入下面两条命令检查里面的内容有没有重复的:
git config --local --edit
git config --global --edit
输入上述指令会打开一个文件,查看里面的内容有没有重复的,有就删除,保留一个就行,我的当时就是"url"有两个重复了。
之后再次输入命令:
git lfs track "*.db"
我们可以看到:
可以用命令:git lfs track查看:
实际上这是修改了我们的.gitattributes文件,.gitattributes
文件是用来配置 Git 存储库中文件的属性和行为的文件。它可以用来指定如何处理存储库中的文件。为了让它生效,我们需要提交:
git add .gitattributes
git commit -m "描述"
git add test.db (db>50M)
git push
之后就可以在GitHub上看见了。
LFS原理
具体来说,Git LFS将大文件替换为指向远程存储的指针。这些指针存储在Git存储库中,而实际的大文件则存储在Git LFS服务器上。当你执行 git checkout
命令并切换到包含大文件的分支时,Git LFS会根据需要下载这些大文件。这样可以减小Git存储库的大小,提高效率,因为不会在每次 checkout
时都下载所有大文件。
因此,在 checkout
阶段,Git LFS会检查你所需的大文件是否已经存在本地,如果不存在,则会从Git LFS服务器下载。这使得你只需下载和管理实际需要的大文件,而不必下载整个Git存储库的所有大文件。
需要注意的是,Git LFS需要额外的配置和设置,以确保它正确工作。你需要在Git存储库中启用Git LFS,并在Git LFS服务器上存储大文件。在克隆或 checkout
存储库时,Git LFS将根据配置自动执行下载。
(checkout
是一个非常重要的操作,它用于在不同的分支之间切换,查看历史版本,创建新的分支等等。)