一、Git LFS是什么?
参考这篇文章,讲得的很细,很好。
二、Git大文件的处理办法是什么?
参考这篇文章
三、文件转换
上面的一篇文章主要讲的是BFG方式的转换,还有一种为migrate方式的转换,官方更提倡这种git lfs migrate
操作流程:
1). 开始之前先备份项目。 转换时会导致commit 的 sha1改变:
2). 执行以下命令: git lfs migrate import --include-ref=master --include="*.mp4"
3). 正常提交,因为 第二步重排了commit,所以需要pull。 如果出现 fatal: refusing to merge unrelated histories ,加上 --allow-unrelated-histories 参数即可。
4). pull过后提交,会先调用lfs处理文件。 然后提交.
** 这里有篇BFG方式转换和migrate方式转换的效率对比情况,如链接。
四、重定向新库地址
将项目里的.git目录下的config文件进行修改,远程指向新库,并新增lfs配置
五、git push
# 推送LFS Objects
git lfs push origin --all
# 推送代码库
git push
六、git push 过程中遇到的问题
1、git lfs push 出现Fatal error,即如下图所示
原因:
GIT-LFS安装版本过高(>=2.5.x)
解决办法:
将GIT-LFS降级安装2.4.x或2.3.x,然后重新push
下载地址:
v2.4.2:https://github.com/git-lfs/git-lfs/releases/tag/v2.4.2
v2.3.4:https://github.com/git-lfs/git-lfs/releases/tag/v2.3.4
***注意:这里经测试发现安装git-lfs的版本其实和安装包没关系 ,和git版本有关系
如下图对比,同样都是git-lfs 2.7.0
2、git push时出现remote: error
这是因为git仓库开启了最大文件限制,切换至项目目录下设置:
git config lfs.https://github.com/xxx/xxxx.git/info/lfs.locksverify false
3、git push是出现[remote reject] master->master(pre-receive hook declined)
是因为git设置了非master角色不能直接推送至master分支,两种解决办法。
a、取消master限制
b、基于当前分支切至新分支:git checkout -b feature_20190305 origin/master
从本地feature 分支push到远程,以创建远程分支:
git push -u origin HEAD:feature_20190305
git client中进行merge。
网友评论