今天在push公司的一个项目的时候出现了大文件限制,于是尝试使用git-lfs来解决这个问题
下载和安装 Git LFS
Linux Debian 和 RPM packages:https://packagecloud.io/github/git-lfs/install
Mac: brew install git-lfs
Windows:目前lfs已经集成在了Git for Windows中,直接下载和使用最新版本的Windows Git即可。
直接下载二进制包:https://github.com/git-lfs/git-lfs/releases
依据源码构建:https://github.com/git-lfs/git-lfs
配置Git LFS
$git lfs track "*.bigfile"
Tracking "*.bigfile"
我们也可以执行git lfs track(不带任何参数),来查看当前tracking的Git LFS File Patterns:
$git lfs track
Listing tracked patterns
*.bigfile (.gitattributes)
Listing excluded patterns
track实际上是修改了仓库中的.gitattributes文件,我们可以查看相关变动:
让Git LFS配置生效
我们需要将.gitattributes文件中的配置改动进行提交
$git commit -m "Add \"*.bigfile\" LFS config "
[master (root-commit) d052478] Add "*.bigfile" LFS config
1 file changed, 1 insertion(+)
create mode 100644 .gitattributes
$git log --oneline
d052478 (HEAD -> master) Add "*.bigfile" LFS config
迁移历史文件至LFS
在很多情况下,我们已经向仓库中已经添加了许多的大文件。开启LFS只会对之后的提交生效,并不会影响这些历史的文件。
那么,如何将这些历史的文件也改用LFS来管理呢?我们可以利用git lfs migrate命令来完成。
- 首先,还是建议将仓库进行备份:
$ git clone --bare $ git@codeup.aliyun.com:<企业或组id>/<仓库地址> backup
- 建议按照分支来进行迁移,一次迁移一个分支。
$ git lfs migrate import --include-ref=master --include="*.png"
然后迁移dev分支
$ git lfs migrate import --include-ref=dev --include="*.png"
最后推送
$ git push --all --force
$ git push --tags --force
Window平台,单个文件不支持超过4G
打赏