• Git采坑与问题排查


    目录

      Case1:代码库中存大文件

      

    Case1:代码库中存大文件

    背景

      有这种情况,项目运行需要依赖一个文件(比如需要读一个文件中的数据),那么最直接的方式就是将该文件添加到代码中的分支中,然后将分支代码(包含大文件)提交到远程版本库中,那么在运行项目的时候,就可以直接读项目中的文件了。

    分析

      上面的操作,其实是不推荐的,一般是禁止的。

      首先,大文件保存到分支中,git add、commit需要很长时间,同时还需要将代码提交到远程代码库,这就意味着,大文件需要通过网络传输到远程,这个过程也是很耗时的。

      另外,如果将该代码合入到master后,其他人拉取分支的时候,也会将该大文件拉取到别人的本地代码库中,无论是别人pull还是clone,拉取过程都会很耗时,因为都会把大文件pull下来。

      还有,大文件上传到远端后,在拉取的代码时候,因为文件内容过大,所以会造成远程仓库的负载升高,甚至造成仓库服务不可用,之前在公司碰到过因为有两个用户同时从远程仓库拉取几个G的代码(可能是大文件、也可能是代码量的确很大),导致整个公司的RD都无法访问远程仓库。不要认为机器有很大带宽就没事,公司内网的速度可是超过10M每秒的。

      最后,如果是对于需要编译打包的文件来说,包含大文件,在打包编译过程中会及其耗时;在打包之前,可能有一些健康检查、静态检查...都会因为代码数据量大而增大检查时间。

      所以,不要向代码库中保存大文件。

    方案

      可以考虑将文件保存在代码以外的地方(比如专门做文件存储的平台),而代码中只需要使用引用文件的地址(URI)即可,在需要的时候下载即可。

    其他

      如果已经将大文件保存到分支代码中了,只要没有将代码提交到远程就没事。

      如果已经将大文件提交到远程分支(已经push到远程了),可以尝试将远程的分支删除。

      如果包含大文件的分支已经合入master,可以进行回退,然后强制push进行刷新

  • 相关阅读:
    ArrayList.sort & Collections.sort
    preliminary->advanced exam coding part
    Spring JDBC的使用
    Spring之面向切面编程(AOP)
    Spring静态代理与动态代理
    Spring之JDBC的连接与注解的使用
    Spring入门之Bean的实例化方式
    Mybatis入门(二)
    Mybatis入门(一)
    正则表达式——转载
  • 原文地址:https://www.cnblogs.com/-beyond/p/11695794.html
Copyright © 2020-2023  润新知