今天在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命令来完成。

  1. 首先,还是建议将仓库进行备份:
$ git clone --bare $ git@codeup.aliyun.com:<企业或组id>/<仓库地址> backup
  1. 建议按照分支来进行迁移,一次迁移一个分支。
$ 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

打赏
支付宝 微信
上一篇 下一篇