目录

  Case1:代码库中存大文件

  

Case1:代码库中存大文件

背景

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

分析

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

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

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

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

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

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

方案

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

其他

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

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

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

Git采坑与问题排查的更多相关文章

  1. v8环境搭建采坑记录

    项目组有把js接入C++服务求的需求,故开始了v8接入的工作,用了一天多时间,v8才在centos环境上成功安装,过程中踩了很多坑,下面将采坑过程记录如下: centos下编译安装v8:   查看ce ...

  2. 实现万行级excel导出---poi--ooxm的应用和采坑

    xl_echo编辑整理,欢迎转载,转载请声明文章来源.欢迎添加echo微信(微信号:t2421499075)交流学习. 百战不败,依不自称常胜,百败不颓,依能奋力前行.--这才是真正的堪称强大!! - ...

  3. 聊聊.netcore采坑那一些事之系统时间and文件路径

    聊聊.netcore采坑那一些事之系统时间and文件路径 Hi,小伙伴大家好,最近工作比较忙,很久没有和大家分享点东西了.这个周末都加了两天班.公司的新项目都是采用.netcore来开发,在开发过程中 ...

  4. java采坑之路

    判断相等 字符串判断相等         String str1 = null;         String str2 = "java金融";        // str1.eq ...

  5. Redis集群搭建采坑总结

    背景 先澄清一下,整个过程问题都不是我解决的,我在里面就是起了个打酱油的角色.因为实际上我负责这个项目,整个过程也比较清楚.之前也跟具体负责的同事说过,等过段时间带他做做项目复盘.结果一直忙,之前做的 ...

  6. Cloudera Manager 5.9 和 CDH 5.9 离线安装指南及个人采坑填坑记

    公司的CDH早就装好了,一直想自己装一个玩玩,最近组了台电脑,笔记本就淘汰下来了,加上之前的,一共3台,就在X宝上买了CPU和内存升级了下笔记本,就自己组了个集群. 话说,好想去捡垃圾,捡台8核16线 ...

  7. angular采坑记录

    在angular中会遇到一些莫名的问题,导致不能完成想要的功能,可能是某项用法使用错误,或许是angular相对应不支持,或者是我们功力根本就没有达到.为了在每次采坑之后能有所收获,再遇到时能理解其根 ...

  8. 分布式改造剧集之Redis缓存采坑记

    Redis缓存采坑记 ​ 前言 ​ 这个其实应该属于分布式改造剧集中的一集(第一集见前面博客:http://www.cnblogs.com/Kidezyq/p/8748961.html),本来按照顺序 ...

  9. 采坑:python base64

    需求:  读取文本内容,对字符串进行base64加密 >>> str = 'aaaaaaaaaaaaaaaaaaa\nbbbbbbbbbbbbbbbbbbbbbbbbbbb\nccc ...

随机推荐

  1. 性能测试基础---LR关联

    ·什么时候需要做关联?一般来说,在脚本运行出错的时候,我们就可能需要进行关联处理. ·脚本出错分为两种情况: ·直接回放出错(失败).通常来说,如果录制成功,回放失败,排除数据的唯一性约束之后,那就必 ...

  2. centos服务器上线第二个django项目方法。

    阿里云服务器开启端口8001,9001 创建一个虚拟环境 virtualenv -p python3 web2 使虚拟环境生效 source web2/bin/activate 虚拟环境中安装djan ...

  3. python 实现 AES ECB模式加解密

    AES ECB模式加解密使用cryptopp完成AES的ECB模式进行加解密. AES加密数据块分组长度必须为128比特,密钥长度可以是128比特.192比特.256比特中的任意一个.(8比特 == ...

  4. 同时引入依赖:spring-cloud-starter-gateway 和 spring-boot-starter-web,报错

    报错: 2019-09-19 11:19:21.437 WARN 72057 --- [ main] GatewayClassPathWarningAutoConfiguration : ****** ...

  5. 本地项目git到github上

    步骤: 1.下载git,安装完成后到桌面右击鼠标会出现git的选项 2.创建一个本地仓库用来存储你的本地项目,我在D盘创建一个reposity的文件夹 3.在reposity文件夹打开git命令行,输 ...

  6. mybatis include refid="Base_Column_List"含义

    <sql id="Base_Column_List" > collegeID, collegeName </sql> <select id=" ...

  7. OpenCV 学习笔记(5) 使用opencv打开笔记本摄像头

    #include "stdafx.h" #include <opencv2\opencv.hpp> #include <iostream> #include ...

  8. win10系统绑定本地IP和mac地址

    第一步:找到自己的IP和mac地址 1.按着win键+R键,输入cmd(大小写都一样) 2.命令: ipconfig   /all              #查看所有地址 然后按“回车键” 3.这样 ...

  9. 洛谷P1962 斐波那契数列题解

    题目背景 大家都知道,斐波那契数列是满足如下性质的一个数列: • f(1) = 1 • f(2) = 1 • f(n) = f(n-1) + f(n-2) (n ≥ 2 且 n 为整数) 题目描述 请 ...

  10. 如何高效的阅读uni-app框架?(建议收藏)

    作者 | Jeskson来源 | 达达前端小酒馆 uni-app的框架,配置:page.json,manifest.json,package.json,vue.config.js.脚本,应用程序,ma ...