# Version Control Features

Unlike other relational databases, Doltgres has multiple branches and stores all data in a commit graph, like git. This makes it possible to efficiently diff any two commits, as well as merge one branch into another. All the git-like version control functionality is exposed as system tables, system variables, functions, and stored procedures.

## Version control overview

* [Using Branches](https://docs.doltgres.com/reference/version-control/branches) explains how to work with different branches in a running server.
* [Merges](https://docs.doltgres.com/reference/version-control/merges) explains how to merge branches into one another and resolve merge conflicts using SQL.
* [Querying History](https://docs.doltgres.com/reference/version-control/querying-history) describes how to query past revisions or different branches of a database.
* [Using Remotes](https://docs.doltgres.com/reference/version-control/remotes) describes how to use remotes to coordinate between Doltgres clones.
* [Functions](https://docs.doltgres.com/reference/version-control/dolt-sql-functions) documents all the system functions that implement version control operations such as `DOLT_COMMIT`, `DOLT_CHECKOUT`, `DOLT_MERGE`, etc. Also documents Doltgres-provided functions that aren't part of standard Postgres, including table functions that produce diffs of any table at two points in its history.
* [System tables](https://docs.doltgres.com/reference/version-control/dolt-system-tables) describes the system tables that provide read access to version control information, such as branches, commit log, diffs, and conflicts.
* [System variables](https://docs.doltgres.com/reference/version-control/dolt-sysvars) documents all the Doltgres-provided system variables that expose and control various aspects of Doltgres's behavior.
