DVC — Git for Data and Models

Version control for large files that Git can't hold: track datasets and models with Git-like commands while the bytes live in your own storage.

Official Site https://dvc.org
Category Data
Pricing Free
Rating ★★★★☆ (4/5)

Overview

DVC extends Git discipline to data: ‘dvc add data/raw’ stores a small pointer file in Git while the actual data goes to remote storage you control (S3, Drive, SSH, a NAS). Checkout any commit and ‘dvc pull’ restores exactly the data that produced those results.

Why researchers use it

  • Exact data provenance — every Git commit maps to exact dataset versions
  • Storage-agnostic — your bytes stay on university storage or any cloud you choose
  • Pipelines + metrics — dvc repro reruns stages when data or code change

Getting started

  1. In a Git repo: dvc init, then dvc add data/raw/ and commit the generated .dvc file.
  2. Configure a remote (dvc remote add -d store s3://… or an SSH path) and dvc push.
  3. Collaborators git pull + dvc pull and hold the identical dataset.

The honest review

Strengths. Answers the question reviewers actually ask — ‘which data produced Figure 3?’ — with a checkout command; integrates cleanly with existing Git habits.

Limitations. Another layer of mental overhead on top of Git; teams must all adopt it or pointers rot; the pipeline features overlap confusingly with Snakemake if you use both.

When NOT to use this For small CSVs that fit in Git, or a dataset that never changes after download, DVC is bureaucracy — a checksum in the README does the job. It earns its keep when data evolves alongside code.