Git LFS

一、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 LFS_第1张图片

五、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。

你可能感兴趣的:(Git LFS)