前言:
Android在开发播放器项目,使用ijkplayer播放器作为原始工程,涉及到对so大文件的重新编译,其单个文件大小一般都在10M左右,多个编译库'armeabi', 'armeabi-v7a', 'x86', 'x86_64', 'arm64-v8a' 加起来超过30M到50M大小,对这些大文件git跟踪,直接上传到git项目中会报错:the remote end hung up unexpectedly。可采取以下方式来上传、跟踪管理这些大的so到文件。
一、修改git config 上传流大小限制
可找到config文件,路径是:项目 -> .git -> config,在文档最后加上
[http]
postBuffer = 524288000
这种方式最简单直接,对于100M以内的文件有很好的实用效果。
二、将超大文件上传到第三方存储,并用链接访问
-
使用
.gitignore
忽略大文件,然后使用第三方工具如git-lfs
(Large File Storage)。 -
将大文件存储在外部服务器上,并在Git仓库中使用符号链接或文本文件指向它们。
-
将大文件分割成小块,使用
git add
命令分别提交。
下面是使用git-lfs
的示例:
首先安装git-lfs
:
git lfs install
定义要追踪的大文件类型:
git lfs track "*.psd"
这会生成.gitattributes
文件,里面包含了对.psd
文件的追踪设置。
添加.gitattributes
文件到仓库:
git add .gitattributes
然后正常添加和提交你的文件:
git add .
git commit -m "Add large PSD file"
最后,推送改动到远端仓库:
git push
使用外部服务的示例:
将大文件上传到网络上的某个地址,然后在Git仓库中使用符号链接:
ln -s /path/to/your/large/file large_file_symbolic_link
git add large_file_symbolic_link
git commit -m "Add large file as symbolic link"
git push
或者在仓库中添加一个文本文件指向外部链接:
echo "https://example.com/path/to/your/large/file" > large_file_url.txt
git add large_file_url.txt
git commit -m "Add URL to large file"
git push
分割文件的示例:
使用split
命令将大文件分割成小块:
split -b 10M large_file.ext small_file_part_
然后对每个生成的小文件进行版本控制:
git add small_file_part_*
git commit -m "Add parts of large file"
git push
这种方式适合超大型文件。
总结:
项目中大型文件分100M以内,以及超过100M的大型文件,如果必须使用git进行跟踪,Git对不同大型文件控制有不同的思路,可以使用灵活的方式来对大型文件进行分批次上传、存储和跟踪。