Version Control for Data

It's Git for Data

The world's first SQL database with built-in version control. Fork, clone, branch, merge, push, and pull your database just like code.

Git-Like Version Control

Fork, clone, branch, merge, push, and pull your database just like a Git repository. Every change is tracked and reversible.

MySQL Compatible

Use the MySQL wire protocol and query dialect. Connect with any MySQL client and use existing tools without modification.

Version Controlled Data

The only SQL database where schema and data changes are tracked with complete accountability and history.

Why Choose Dolt?

Traditional databases don't track changes. Dolt creates an immutable history of every data modification.

Data Accountability

Every change is tracked, attributed to a user, and logged with a timestamp.

Data Collaboration

Work on branches in isolation. Merge safely without breaking production.

Instant Rollback

Revert the entire database or specific tables to any previous commit instantly.

Data Sharing

Share, discover, and collaborate on DoltHub—the GitHub for data.

Install & Update in Seconds

Use your favorite package manager to get the CLI running instantly.

$brew install dolt
$ dolt version

Verify your installation with the command above

Prefer a GUI? Get Dolt Workbench

Visualize diffs, manage branches, and run SQL queries with our native desktop app.

Coming Soon

Dolt Workbench Agent Mode

Let AI handle your database operations. Chat with your database to run queries, manage branches, and analyze data directly within Dolt Workbench.

Natural Language Queries
Automated Branching
Agent Mode

Get Started in 3 Steps

1

Setup & Configure

2

Develop with SQL

3

Commit & Share

bash — dolt

Description

Initialize your repository and configure your identity. This creates the .dolt directory to track all changes.

$ mkdir dolt && cd dolt $ dolt init Successfully initialized dolt data repository. $ dolt config --global --add user.name "Your Name" $ dolt config --global --add user.email "you@example.com"

Collaborative Data Work

Just like Git, Dolt allows you to create branches to work on data in isolation. Dolt intelligently handles schema and data conflicts, making collaboration seamless.

key commands
Create a new branch
$ dolt checkout -b feature-branch
Merge back to main
$ dolt merge feature-branch
  • Parallel Work: Multiple team members work simultaneously.
  • Safe Merging: Detect and resolve conflicts before committing.
  • Experimentation: Try new data structures without risk.
Main
Production Database
Feature Branchcheckout -b
Merged to Main

Conflict-free merge complete.

Connect Your App

Dolt speaks MySQL. This means you can use your favorite drivers, ORMs, and GUI clients without any custom plugins. Just point them to your running Dolt server.

Standard Port3306
Default Userroot
Default Host127.0.0.1
python
import mysql.connector

mydb = mysql.connector.connect(
  host="127.0.0.1",
  user="root",     # Default Dolt user
  password="",     # Default is no password
  port=3306,       # Default port
  database="beginner"
)

print(mydb)
# <mysql.connector.connection_cext.CMySQLConnection>

Frequently Asked Questions

Common caveats for Mac, Windows, and Linux users.

Windows (PowerShell):PowerShell strips quotes. Use single quotes for config: 'you@example.com'.
Mac (Gatekeeper):If you see "Unidentified Developer", we recommend using brew install dolt which handles signing automatically.
Linux (Permissions):The install script moves binaries to /usr/local/bin. Run with sudo or add a local bin to your PATH.
If you have MySQL or another database running locally, port 3306 might be taken.

Fix: Start the server on a different port using the --port flag, for example: dolt sql-server --port 3307.
This error occurs when you try to run Dolt commands outside of an initialized directory.

Fix: Ensure you have run dolt init in your current directory before running other commands.
Unlike traditional MySQL, Dolt tracks changes in a working set. If you don't see them in your commit history, you haven't committed them yet.

Fix: Run call dolt_add('table_name'); followed by call dolt_commit('-m', 'msg');.
dolt sql opens an interactive shell for quick queries (like SQLite).

dolt sql-server starts a running daemon that listens on port 3306, allowing you to connect with external tools like TablePlus, DBeaver, or your application code.
No, Dolt is strictly MySQL-compatible. However, if you need the same version control features for Postgres, check out our sister project, DoltgreSQL.
Just like Git, if two branches modify the same row, Dolt will pause the merge. You can use dolt conflicts resolve or SQL statements to pick the correct version of the data, then commit the resolution.

Pro Tips

01

Easy Import

Have a CSV? Use dolt table import -u -c to update schema and create tables automatically.

02

Diff Everything

dolt diff works exactly like git diff, but for rows and cells. Use it before every commit.

03

System Tables

Query dolt_log or dolt_status directly via SQL to build custom tools.

Ready to Dolt?

Share your database, discover public datasets, and collaborate with others on DoltHub.

© 2025 DoltHub Inc.

Create a free website with Framer, the website builder loved by startups, designers and agencies.