git 大文件上传受限解决办法
- 问题
- 解决办法1
- 花钱,购买LFS
- 使用
- 解决办法2
- 放弃同步大文件
问题
我在写一个数据处理代码的手,由于处理的csv文件大小为1.3G,处理完之后更大了,然后像往常一样,我把代码通过git做版本控制,准备传到github上的时候,问题出现了。
添加的时候就已经出现了警告
然后在push的时候,我等了好一会,传了700多MB的时候提示失败。xxx.csv文件超出100MB限制。
解决办法1
花钱,购买LFS
大文件存储功能,Git Large File Storage (LFS),可用于处理项目中的大文件,在git中只会记录对此大文件的引用,不会将其加入.git文件夹中,使得项目体积不会猛增,checkout和add时速度更快。LFS合适用于psd,视频等。
与LFS同步时使用特殊命令git lfs fetch 分支名。在git lfs install之后,使用以下格式的命令git lfs track "*.iso"来追踪大文件,此命令会将相关信息存入.gitattributes文件中。之后所有放入的iso都会正常放入LFS中。git add时不用手工做特殊处理。上传时会显式提示使用了LFS功能。
使用
安装LFS:https://git-lfs.github.com/ 在Repo中初始化。
git lfs install
然后 跟踪一下你要push的大文件的文件或指定文件类型 git lfs track "*.csv"
, 当然还可以直接编辑.gitattributes文件
以上已经设置完毕, 其余的工作就是按照正常的 add , commit , push 流程就可以了 。
目前 Git LFS的总存储量为1G左右,超过需要付费。
解决办法2
放弃同步大文件
1、当被跟踪的文件里面有不想跟踪的文件时,使用命令git rm
删除文件。如:git rm --cached xxx.csv
删除readme1.txt的跟踪,并保留在本地。git rm --f xxx.csv
删除readme1.txt的跟踪,并且删除本地文件。
然后git commit
即可。但是git status查看状态时还是会列出来。
2、每次用git status查看状态时总是列出未被跟踪的文件,可以通过.gitignore
文件达到目的。
在git init
的目录下建立.gitignore
文件,使用如下语法进行填写文件即可。
-
/dataset/
过滤整个文件夹 -
*.zip
过滤所有.zip文件 -
/dataset/xxx.csv
过滤某个具体文件