今天创建了一个文件夹,将平时本地和云服务器中一些中间件进行汇总,并上传到github上,但是最后push的时候发现失败了
根据错误信息很容易定位到问题是github限制了最大单个文件上传大小是100M,我们的3个jar包都大于100M导致上传失败,对于这个问题,错误提示中给出了解决方法,让我们去https://git-lfs.github.com 寻找解决方式。
根据提示我们打开这个网站发现这是一个开源的针对git的大文件传输的拓展
我们的mac系统可以使用brewhome进行安装
在我们控制台中直接执行命令
brew update
brew install install git-lfs
下载安装成功后按照网站的教程执行git指令
git lfs install
注意下这个指令只需要我们执行一次就行了
下面我们进到我们仓库目录中追踪我们的文件的拓展文件名
git lfs track "*.jar"
git add .gitattributes
执行上面的命令之后我们按照常规操作将文件上传到github上。
但是事情并没有想象中的那么顺利,当最后push发现这3个文件仍然因为超过100M而上传失败
为了解决这个问题我们再次查看https://git-lfs.github.com 发现这段内容
从上面内容不难理解git llfs不会追踪预先存在的文件,例如其他分支上的文件或者历史已经提交的文件,因为之前我们所有文件已经commit,所以猜想可能是因为这个导致的,对于这个命令我不是很熟悉,所以采用了最笨的方法直接git reset取消了之前的提交,重新执行了上面的git 和git lfs命令终于提交成功了
最后查询了一下git-lfs的原理发现:是将大文件存储到Git LFS服务器上,而不是存储在Git仓库中。当Git LFS文件被提交时,Git LFS会将相应的指针(pointer)存储在Git仓库中,这个指针指向实际的文件存储位置。当需要访问该文件时,Git LFS会从Git LFS服务器上下载相应的文件