# Versions, branches and merges

> How Prompt Verse versions prompts, agents and workflows: commits, branches, tags, releases, merging and restoring an older version.

Source: https://prompt-verse.io/docs/versions/

Prompts, agents and workflows share one history model that works like Git: commits, branches, tags and merges.

## The working copy and commits

What you edit is the **working copy**. A **commit** saves it with a message. Write messages that say why:

- Good: “Cut to six sentences, no promises”.
- Not useful: “update”.

In the studio, open **History** to commit and to read past commits. Reading an old commit is safe; the app shows a banner and a **Back to working copy** button.

## Branches

A branch lets you try an idea without touching the version in use.

1. Create a branch, for example `shorter`.
2. Change the prompt and commit on that branch.
3. When it works, merge it back.

## Merging

Merging a branch into the current one combines the changes. If both sides changed the same part, the merge returns the **conflicts** and you choose, per conflict, **ours** or **theirs**. Nothing is overwritten silently.

## Tags and releases

Name a commit as a **tag** (for a point you want to find) or a **release** (for a version you ship). Names look like `v1.0` or `launch`, and a tag can have notes.

## Go back to an older version

Create a branch from the older commit and check it out. The newer history stays where it is, so you can go forward again.

## Over MCP

The `versions` tool has `commit`, `commits`, `branch`, `branches`, `checkout`, `current`, `merge`, `tag` and `tags`, and works on `prompt`, `workflow` and `agent`. See the [reference](/docs/reference/versions/).

```json title="Commit a prompt"
{ "tool": "versions", "action": "commit", "args": { "entity_type": "prompt", "entity_id": "<id>", "message": "Cut to six sentences" } }
```
