趋近智
dvc add 命令用于告诉 DVC 应管理项目仓库中的哪些数据文件或目录。它是将数据集、模型或其他大型制品置于 DVC 控制下的主要方式,用 Git 可以有效跟踪的小型占位符文件替换大型文件本身。
可以把 dvc add 看作 git add 的等效操作,但它是专门为那些您不希望直接存储在 Git 历史记录中的数据文件而设计的。当您对文件或目录运行 dvc add 时,DVC 会在后台执行多项操作:
.dvc/cache。数据使用哈希值作为其标识的一部分进行存储,即使项目中有多个相同文件,也能避免重复。.dvc 文件: 它在数据的原始位置创建一个小型文本文件,在原始名称后添加 .dvc(例如,data/images.zip 变为 data/images.zip.dvc)。此文件包含元数据,包括原始数据的哈希值、大小和路径。这个 .dvc 文件充当指针或占位符。.gitignore: DVC 会自动将与原始数据文件或目录路径匹配的模式添加到您项目的 .gitignore 文件中。这很重要,因为它指示 Git 忽略大型数据文件,从而防止意外提交到您的 Git 仓库。.dvc 文件.dvc 文件是 DVC 如何与 Git 集成的核心。它是一个小型、人类可读的文件,通常采用 YAML 格式,包含 DVC 正在跟踪的数据的元数据。让我们看一个例子。如果您运行 dvc add data/raw/iris.csv,生成的 data/raw/iris.csv.dvc 文件可能如下所示:
# data/raw/iris.csv.dvc
outs:
- md5: a304afb96070e7f03cecfa36f6517373
size: 3858
path: iris.csv
以下是这些字段的含义:
outs: 定义此 .dvc 文件跟踪的输出。md5: DVC 为 iris.csv 计算的唯一内容哈希值(校验和)。如果 iris.csv 的内容发生变化,此哈希值也将变化。size: 原始数据文件的大小(以字节为单位)。path: 原始数据文件的路径,相对于 .dvc 文件所在位置。由于 .dvc 文件是小型文本文件,它们非常适合使用 Git 进行版本管理。当您提交 .dvc 文件时,您实质上是记录了一个指向数据特定版本(由哈希值标识)的指针,而无需将数据本身存储在 Git 中。
让我们跟踪一个数据文件:
# 假设您有一个数据集文件:data/features.csv
# 以及一个训练好的模型文件:models/model.pkl
# 跟踪数据集
dvc add data/features.csv
# 跟踪模型
dvc add models/model.pkl
运行这些命令后,您将看到新文件(data/features.csv.dvc、models/model.pkl.dvc)以及对 .gitignore 的修改。
现在,让我们跟踪一个包含图像的整个目录:
# 假设您有一个目录:data/raw_images/,其中包含许多 jpg 文件
# 跟踪整个目录
dvc add data/raw_images
这会创建一个单独的 data/raw_images.dvc 文件。该文件将包含 dvc add 执行时 data/raw_images 目录中所有文件的元数据(包括哈希值)。DVC 通过根据内容哈希值单独缓存目录中的每个文件来优化存储。.gitignore 文件也将更新以忽略 data/raw_images/ 目录本身。
使用 DVC 添加数据后的标准工作流程是将更改提交到 Git:
dvc add <您的数据文件或目录>。.dvc 文件和 .gitignore: 运行 git add <您的数据文件或目录>.dvc .gitignore。(使用 git add . 通常也有效,但请确保您理解正在暂存的内容)。git commit -m "跟踪初始数据集版本"。这个序列确保您的 Git 提交历史包含 .dvc 指针文件,将您的代码版本与 DVC 管理的特定数据版本关联起来。
使用
dvc add跟踪数据的流程:该命令从工作区获取大型数据文件,将其内容存储到 DVC 缓存中,并创建一个小型.dvc元数据文件。这个.dvc文件,连同对.gitignore的更改,随后由 Git 使用标准的git add和git commit命令进行跟踪。
通过使用 dvc add,您在项目代码(由 Git 管理)及其关联数据(由 DVC 管理)之间建立了重要的连接。这种分离使您的 Git 仓库保持精简和快速,同时确保数据的历史被可靠地跟踪。下一步是学习如何使用远程存储来共享和获取这些版本化的数据。
这部分内容有帮助吗?
dvc add 命令的官方文档,详细说明了其用法和可用选项。© 2026 ApX Machine Learning用心打造