# Merge, cherry-pick & revert

## Merge

Start a merge from a branch's context menu, **Merge '…' into '…'…**, or drag one branch onto another. The dialog sets:

- the mode: default, **no fast-forward**, **fast-forward only** or **squash** (the default mode is a setting);
- the strategy: `ort`, `resolve` or `ours`, and options such as favouring ours or theirs, ignoring whitespace and the
  diff algorithm.

## Cherry-pick and revert

**Cherry-pick** and **Revert** are on a commit's context menu. You choose whether to commit at once, whether to record
the original commit (cherry-pick), and which parent counts as the mainline for a merge commit.

## Conflicts

When a merge, cherry-pick or revert stops on conflicts, a banner shows how many files conflict. Resolve them in your
editor and stage them, then commit (merge) or press **Continue** (cherry-pick, revert). **Abort** puts everything back.

tratto has no conflict resolver of its own yet: the items under **Actions › Resolve Conflicts** are greyed out.

## Rebase

Interactive rebase is not built yet. A rebase happens only through a pull that your Git config sets to rebase: see
[Fetch, pull & push](/docs/git/remotes).

## Patches

**Export as Patch…** on a commit writes it as a patch. Applying a patch, bisect and blame (Annotate) are not built yet.
