转自:http://www.liuxiao.org/2017/02/git-处理-github-不允许上传超过-100mb-文件的问题/
记录一下自己工作时遇到的问题,免得下次再遇到了还到处网上查资料解决。
自己的项目的版本控制用的是Git,代码仓库在github托管。项目里用到了百度导航SDK,由于百度导航SDK太大,于是上传是的时候报错: this exceeds GitHub's file size limit of 100.00 MB 然后自己百度搜索了一下 找到了一个不错的解决方法
1、移除错误缓存
首先应该移除所有错误的 cache,对于文件:
例如对于我的例子就是这样的
git rm --cached -r /Users/xxx/Desktop/xxx/BaiduNaviSDK/libbaiduNaviSDK.a
2、重新提交:
编辑最后提交信息
git commit --amend
修改 log 信息后保存返回.
重新提交:
git push
3、将大文件加入 Git Large File Storage:
1)首先安装 git-lfs
brew install git-lfs
2)将想要保存的大文件 “路径” 或者 “类型” 添加进 track:
例如对于我的例子就是这样的:
git lfs track "libbaiduNaviSDK.a"
* 需要注意的是这里面仅能添加类型的扩展名或者文件名作为跟踪方式,不可以添加路径或者目录进行跟踪。
4、将想要保存的大文件正常添加进 git:
例如对于我的例子就是这样的:
git add /Users/jinyabin/Desktop/xxx/BaiduNaviSDK/libbaiduNaviSDK.a
5、正常进行提交&推送:
git commit -m "Add design file"
git push origin master
补充技巧:
提交以后出错再进行上面的步骤可能比较麻烦,如果你已知自己提交的版本库中确实存在一些大于 100MB 的文件,不妨先搜索:
find ./ -size +100M
然后将这些文件移除,等待其他文件提交完后再复制回来,这样只需要从步骤3的操作开始就可以了。
常见问题:
1、错误:fatal error: unexpected signal during runtime execution
goroutine 23 [chan receive]:
github.com/github/git-lfs/lfs.ScanRefsToChan.func2(0xc8200d4540, 0xc8200c6000, 0xc8200d45a0)
/Users/rick/go/src/github.com/github/git-lfs/lfs/scanner.go:153 +0x4e
created by github.com/github/git-lfs/lfs.ScanRefsToChan
/Users/rick/go/src/github.com/github/git-lfs/lfs/scanner.go:160 +0x30c
出现这个问题通常是由于 go 引擎未安装或者版本太老(1.5.1及以下版本在 Mac 上面有未知错误),或者 git-lfs 版本太老。如果没有安装 go,可使用如下命令安装:
brew install git-lfs
然后使用如下命令升级:
brew update
brew upgrade go
brew upgrade git-lfs
然后使用如下命令查看:
git-lfs version
我这里的版本号如下,如果你比我的版本高就对了,否则可以尝试卸载之前安装的 go 和 git-lfs 重新安装:
git-lfs/1.5.5 (GitHub; darwin amd64; go 1.7.4)
参考文献:
[1] https://help.github.com/enterprise/11.10.340/user/articles/working-with-large-files/