Data Version Control (DVC) is an open source tool that brings Git like versioning to datasets, models, and pipelines, letting you track changes to large files without storing them directly in Git.
DVC works by storing lightweight metafiles (.dvc files) in your Git repo that point to the actual data, while the real files live in remote storage (S3, GCS, Azure Blob, etc.); this way Git tracks the pointers and DVC handles pulling/pushing the actual large files.
DVC is cheap and durable because it relies on remote storage backends (S3, GCS, Azure Blob, etc.) for the actual data, so you pay standard cloud storage rates instead of bloating your Git host, and your data stays safe and versioned even if your local machine or repo is lost.
DVC's workflow mirrors Git closely: you init once per repo, then add files to start tracking them, and every time the data changes you run add again to create a new version; the actual commands stay almost identical to Git's muscle memory.
# initialize DVC in your repo, generates a .dvc/ folder (similar to .git/)
dvc init
# start tracking a file/folder, generates a data.csv.dvc metafile (a pointer file)
dvc add data/data.csv
# push the actual data to the configured remote storage
dvc push
# pull the actual data down from remote storage (e.g. after cloning the repo)
dvc pull
# check status of tracked files (like git status)
dvc status
The .dvc metafile (not the actual data) is what gets committed to Git, this keeps the repo lightweight while still tracking exactly which data version belongs to which code commit.
To use an S3 bucket as remote storage, you configure it once and DVC handles push/pull to it from then on and push the config file to the git repo.
# add an S3 bucket as the default remote storage
dvc remote add -d myremote s3://my-bucket/dvc-storage
Typical team flow: make changes to the dataset, run dvc add to version it, dvc push to upload the data to remote storage, then git add/git commit/git push the updated .dvc file so colleagues can git pull and dvc pull to sync both code and data together.