使用DVC管理大文件变更历史(基于git)
DVC(Data Version Control) 是一个专门用于管理数据和二进制文件版本控制 的工具,它特别适合那些需要处理大量非文本文件(如图像、视频、模型、数据集等)的项目。
一般地,如果项目中有大文件或者二进制文件,我们会用LFS。DVC 和 Git LFS 都是用于处理大文件和二进制文件的工具,但它们的设计目标、使用场景和功能有显著差异 。
Git LFS 是 Git 的一个扩展,对 Git 用户来说上手更容易。
对于几十 MB 到几百 MB 的文件,LFS 表现良好。如果文件太大(比如 GB 级别),DVC 通常更高效。
但不像 Git LFS 那样仅限于 GitHub 或 GitLab,DVC 更加开放和灵活。可以直接对接 S3、GCS、Azure、SSH 等,非常适合云端开发和协作。
通常LFS就足够了。如果需要追踪数据与脚本的关系、想把数据放在云上、更精细的版本控制可以考虑切换到 DVC。
安装
通过命令 brew install dvc安装。
有些地方说要用pip3 install dvc,我试了试不行。
然后用dvc --version验证一下是否可用了。
例子
创建项目目录并初始化:
mkdir my-dvc-project
cd my-dvc-project
git init
dvc init
会看到 .dvc 目录和 .gitignore 文件被创建了。
.dvc目录和.git目录一样,会记录每次提交的快照等信息,.gitignore文件是必须要有的,因为DVC会把自己跟踪的文件加入git的忽略列表。
接下来准备一个数据文件:
echo "name,age" > data.csv
echo "Alice,30" >> data.csv
echo "Bob,25" >> data.csv
echo "Charlie,35" >> data.csv
用dvc add data.csv来跟踪到DVC,这样会生成一个 data.csv.dvc 文件,记录文件的哈希值,而不是实际文件内容:

把这个文件提交到git:
git add data.csv.dvc .gitignore
git commit -m "Add data file with DVC"
注意:data.csv 不会被提交到 Git,只会在本地缓存或远程存储中保存。
如果要更新文件的内容,使用dvc pull。比如git切换了分支或checkout,就需要更新DVC跟踪的内容:

每次提交变更,.dvc都会记录完整的文件快照,所以变更了几次,文件还是挺占地方的。这时候就需要放到云上的,也方便合作者下拉文件。例如 AWS S3:
dvc remote add -d myremote s3://mybucket/myproject
dvc push
合作者设置好remote就可以pull下来了。
使用DVC管理大文件变更历史(基于git)的更多相关文章
- 基于RMI服务传输大文件的完整解决方案
基于RMI服务传输大文件,分为上传和下载两种操作,需要注意的技术点主要有三方面,第一,RMI服务中传输的数据必须是可序列化的.第二,在传输大文件的过程中应该有进度提醒机制,对于大文件传输来说,这点很重 ...
- 基于socket实现大文件上传
import socket 1.客户端: 操作流程: 先拿到文件--->获取文件大小---->创建字典 1.制作表头 header 如何得到 他是一个二进制字符串 序列化得到 字典字符串 ...
- Git仓库删除大文件
Git仓库删除大文件 背景 当用Git久了,难免会手误或临时添加一些大文件到仓库中,即使以后添加进了.gitignore,甚至做了git rm,但是Git为了保证版本可回退,history pack里 ...
- java 导出 excel 最佳实践,java 大文件 excel 避免OOM(内存溢出) excel 工具框架
产品需求 产品经理需要导出一个页面的所有的信息到 EXCEL 文件. 需求分析 对于 excel 导出,是一个很常见的需求. 最常见的解决方案就是使用 poi 直接同步导出一个 excel 文件. 客 ...
- 在git多分支repo仓库中彻底清除大文件
坑的由来 repo中不小心上传了许多测试生成的data.结果可想而知,原本只有代码的仓库突然间变得无比臃肿(或者是慢慢臃肿),从早期的几十MB,迅速飙升至1G. 到底发生了什么 早些时候我对git的原 ...
- 记一次删除Git记录中的大文件的过程
app/test/target/ #查看大文件 git rev-list --objects --all | grep "$(git verify-pack -v .git/objects/ ...
- 更好的在 Git 项目中保存大文件(Git LFS 的使用)
珠玉在前, 大家可以参考 Git LFS的使用 - 简书 为什么要用 Git LFS 原有的 Git 是文本层面的版本控制, 为代码这种小文件设计的, 保存大文件会导致 repo 非常臃肿, push ...
- .git文件过大!删除大文件
在我们日常使用Git的时候,一般比较小的项目,我们可能不会注意到.git 这个文件. 其实, .git文件主要用来记录每次提交的变动,当我们的项目越来越大的时候,我们发现 .git文件越来越大. 很大 ...
- git push提交报错,提示文件过大,且去掉大文件也报同样的错误
错误原因: 大文件存在没有被提交的commit记录里面: 解决方案: 删除有大文件的commit记录即可 移除大文件的正确姿势 $ git rm --cached giant_file(文件名) # ...
- git上传超过100m大文件
1.git出错如下错误时 执行如下可解决错误: git rm --cache '大文件路径' git commit --amend -CHEAD git push 2.当必须上传大文件时.需借助git ...
随机推荐
- THUWC2025 游记
Day -C 先进入金国大臣面积群,然后发现 xyf 又在行联考学生群故事. Day -1 早上赶飞机进京.飞机上启动钢丝.到达大兴机场之后坐火车前往北京西站,然后坐地铁到海淀黄庄.非常饿,但是决定先 ...
- 最新demo版|如何0-1开发支付宝小程序之如何调试小程序(二)
上一篇跟大家详细的讲了下开发支付宝小程序前所需要做准备事项,安装了支付宝小程序的开发工具.那么今天就来详细聊一下在小程序开发工具中,我们需要如何调试小程序. 支付宝小程序的调试分为三种,分别是「模拟器 ...
- C#实现文件的压缩和解压缩
原文链接:https://www.cnblogs.com/sunyaling/archive/2009/04/13/1434602.html 在C#中实现文件的压缩和解压缩,需要使用第三方的组建完成. ...
- 如何通过 Python 实现一个消息队列,为在线客服系统与海外运营的APP对接
我在业余时间开发了一款自己的独立产品:升讯威在线客服与营销系统.陆陆续续开发了几年,从一开始的偶有用户尝试,到如今线上环境和私有化部署均有了越来越多的稳定用户. 而我收到的用户需求也越来越多,产品化的 ...
- Deepin 设置开机执行某sh文件
背景 deepin系统上部署了Geoserver,但是每次开机后都得手动过去起,麻烦,故想着找个办法解决下 过程 在/etc/systemd/system目录下新建一个 geoserver.servi ...
- SignalR 外部调用自定义Hub类的方法,Clients为null
这是因为外部调用的类的对象和你连接的Hub类的对象,这两个对象 不!一!样! 解决方法 在自定义的Hub类中,注入IHubContext对象,然后在方法中调用IHubContext对象来向前端推送数据 ...
- QT5笔记: 35. QGraphicsView 视图
 三者关系:View中可以有多个Scene,Scene放在Vi ...
- error setting certificate verify locations: CAfile: C:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt CApath: none
这个问题是因为git配置里crt证书的路径不正确导致的. 这个路径配置是在C:\Program Files\Git\etc\gitconfig中,应该所有人的配置都在这里 [diff "as ...
- Linux - centos6.6升级openssh9.7p1
一.注意事项 1.任何会被修改的配置文件都要提前备份 2.每一步操作都要记录 3.提前预演,知道可能遇到的问题,以及对应的解决方法,能够在生产环境上升级时,更快完成操作. 4.一开始用来操作的ssh会 ...
- TDH - 如何显示Guardian Client角色
注意:本博客适用TDH版本4.3.x 默认该页面的 Guardian Client 是隐藏的,如果需要对 Guardian Client角色进行什么操作的话,需要先将 Guardian Client角 ...