# 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](/reference/version-control/branches.md) explains how to work with different branches in a running server.
* [Merges](/reference/version-control/merges.md) explains how to merge branches into one another and resolve merge conflicts using SQL.
* [Querying History](/reference/version-control/querying-history.md) describes how to query past revisions or different branches of a database.
* [Using Remotes](/reference/version-control/remotes.md) describes how to use remotes to coordinate between Doltgres clones.
* [Functions](/reference/version-control/dolt-sql-functions.md) 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](/reference/version-control/dolt-system-tables.md) describes the system tables that provide read access to version control information, such as branches, commit log, diffs, and conflicts.
* [System variables](/reference/version-control/dolt-sysvars.md) documents all the Doltgres-provided system variables that expose and control various aspects of Doltgres's behavior.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.doltgres.com/reference/version-control.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
