将现有的Git仓库转换为Git LFS仓库并将仓库中的二进制文件存入Git LFS中
注意:这样的操作会改变Git仓库的历史,因此在执行之前请确保你已经备份了重要的数据。
初始化Git LFS
git lfs install
迁移本地历史仓库
LFS迁移基本思想:LFS重写本地历史 → force push覆写远端,达到迁移的效果。
所以我们最好将本地仓库与远端同步,并且将所有的远端分支都创建本地分支;
而后cd到自己本地仓库,执行以下下命令,--include里面是glob表达式,自行添加想LFS管理的文件名,--everything代表所有本地分支
git lfs migrate import --everything --include="*.ai,*.psd,*.jpg,*.png,*.rp,*.fig"
这个时候无论在哪个分支,都会出现 .gitattributes 文件,且都会被添加上类似以下内容。
*.jpg filter=lfs diff=lfs merge=lfs -text *.png filter=lfs diff=lfs merge=lfs -text *.rp filter=lfs diff=lfs merge=lfs -text *.fig filter=lfs diff=lfs merge=lfs -text *.ai filter=lfs diff=lfs merge=lfs -text *.psd filter=lfs diff=lfs merge=lfs -text
强烈建议将 .gitattributes 文件提交到Git仓库
同时可以看到我们二进制文件全部都转成了以下形式文本
version https://git-lfs.github.com/spec/v1 oid sha256:9171c8350d72ccca6ad60ac80b577157ad1f9fd44ca05744216e02ccbfcdf491 size 10260
查看有哪些文件被转成了lfs管理,检查是否有遗漏
git lfs ls-files
确认无误,之后就可以推送到远程仓库
由于lfs的迁移会重写所有的commit,并且修改hash值,因此需要我们需要加上--froce
这步需要取消保护分支(保护分支无法-f)
git push --force --all
现在,你的Git仓库已经成功转换为Git LFS仓库,并且二进制文件被存储在Git LFS中。
迁移一些补充说明
1. 迁移者的本地仓库lfs文件转源文件
经过以上步骤,由于我们将所有文件都已经转成文件指针,我们需要将文件下载回来才能正常使用该仓库。
需要注意,其他人重新clone 或者同步 lfs迁移过的remote仓库不需要此步骤,只针对迁移者本地仓库。
git lfs pull
2. 团队中其他成员迁移前的本地仓库同步
由于远程仓库的历史已经被全部重写,所以无法直接同步,最好是删除本地分支,重新拉取远程分支,如果本地已经有部分commit需要提交,可以重名本地分支,拉取远程再做cherry pick。git tag 同理,删除迁移前的tag。
本地仓库清理:上面的迁移成功将二进制文件迁移成git lfs对象,git log也不再存储源文件文件变更而是指针变更,但是在本地.git文件夹中仍存在之前不再需要的git log缓存,执行以下命令做清理。
git reflog expire --expire-unreachable=now --all git gc --prune=now
本文主要参考:https://blog.csdn.net/weixin_43862847/article/details/121374089
本站文章除注明转载/出处外,均为原创,若要转载请务必注明出处。转载后请将转载链接通过邮件告知我站,谢谢合作。本站邮箱:admin@only4.work
尊重他人劳动成果,共创和谐网络环境。点击版权声明查看本站相关条款。