Git LFS

作者: 真灼 | 来源:发表于2019-03-05 11:10 被阅读0次

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

    相关文章

      网友评论

        本文标题:Git LFS

        本文链接:https://www.haomeiwen.com/subject/ezcnuqtx.html