git提交大文件报错解决方案

git提交大文件报错解决方案

    • 1、http.postBuffer
    • 2、Git LFS
      • 安装及配置git lfs
      • 1.在Git仓库中为仓库设置相关配置
      • 2.选择要用LFS追踪的文件
      • 3.查看正在被LFS追踪的文件
      • 4.放弃追踪某个文件
      • 5.配置完需要追踪的文件后要先提交到git仓库
      • 6.取消LFS的全局配置

我最近帮朋友扒网站时,因为很多视频都在保存在本地,上传git仓库时报错了,看了下错误信息,大概意思是文件太大了,超过git的限制了,这里简单记录一下解决方法。

1、http.postBuffer

http.postBuffer默认单位为B,所以500MB=10241024500
注意:我这里设置的是500MB(大家可以根据自己的需要设置)。

	# 全局配置
	git config --global http.postBuffer 524288000
	 
	或
	 
	# 当前仓库配置
	git config http.postBuffer 524288000

查看 http.postBuffer数值是否设置成功:

	# 查看当前的Git配置
	git config --list

或者直接找.git文件里的config文件手动写入并保存
git提交大文件报错解决方案_第1张图片

注: 但是可能有些人设置不会生效,具体咋回事我也不清楚

但是呢, http.postBuffer不好使也别慌

不要慌不要慌,太阳下山有月光,泡面吃完还有汤


2、Git LFS

Git LFS是基于Git的 .gitattributs 配置文件的特性,用 smudge过滤器基于 指针文件寻找大文件内容, 用 clean过滤器在对大文件改动时,创建指针文件的新版本。同时还用 pre-push钩子将大文件上传到Git LFS服务器, 即在 git-push时, 如果提交中包含被LFS跟踪的大文件,pre-push钩子会检测到,并执行上传Git LFS服务器的动作。

安装及配置git lfs

我用的windows系统就直接开搞了,其他系统的去看官方吧GIT LFS

1.在Git仓库中为仓库设置相关配置

	git lfs install

这个命令会自动改变Git配置文件 .gitconfig,而且是全局性质的,会自动在配置文件中增加如下配置:
[filter “lfs”]
clean = git-lfs clean – %f
smudge = git-lfs smudge – %f
process = git-lfs filter-process
required = true

2.选择要用LFS追踪的文件

	git lfs track "*.mp4"
	
	# 或者具体到某个文件
	git lfs track "1.png"
	git lfs track "demo.lfs"

这个命令会更改仓库中的 .gitattributes配置文件(如果之前不存在这个文件,则会自动新建):
查看如下:
$ cat .gitattributes
*.svg filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text

3.查看正在被LFS追踪的文件

	// 查看现有的文件追踪模式(查看使用)
	git lfs track
	
	// 显示当前跟踪的文件列表(查看使用)
	git lfs ls-files

4.放弃追踪某个文件

	git lfs untrack "1.png"

5.配置完需要追踪的文件后要先提交到git仓库

	git add .gitattributes
	git commit -m "add .gitattributes"

使用git-lfs会生成.gitattributes文件,这个文件需要被上传到远程仓库
在上传.gitattributes文件之前不要commit被跟踪的大文件到git,会导致大文件上传失败。

6.取消LFS的全局配置

	git lfs uninstall

也可以直接打开.gitattributes修改里面的内容。

	#允许提交.mp4为后缀的大型文件
	*.mp4 filter=lfs diff=lfs merge=lfs -text

如果一个仓库中包含LFS内容,但是在推送时不想推送这类文件,只要加上 --no-verify选项就行

	// --no-verify选项告诉 git push完全跳过 pre-push钩子。
	git push --no-verify

被LFS管理的文件,本地仓库中保存的内容实际上是指针文件,其格式类似于下面这样:

	git show HEAD:2.svg
	
	// version表示LFS的版本
	// oid表示文件对象的唯一hash值
	// size表示文件的大小
	version https://git-lfs.github.com/spec/v1
	oid sha256:158213f90f8b27012034c6f58db63e1861b12aa122d98910de311bf1cb1e50a0
	size 14651

注: LFS是面对企业级的收费项目,若你得团队有钱那就买,肯定是花钱越多空间越大

如果是自己用,那就找一些免费的git仓库我这里用的CODING它内置lfs,好像花钱可以扩充空间,没咋注意,反正能玩

你可能感兴趣的:(Git,常见问题记录,git,github,http.postBuffer,git,lfs,git上传大于100MB的文件)