Skip to content

Conflicts

A conflict is a state you work in, not an error you recover from.

A merge, a rebase, a cherry-pick, or a revert can stop on a conflict. stage shows this as a state, not as an error. The status panel gets a banner that names the operation and the key that continues it.

MERGING — m for options

stage reads this state from the marker files in .git. The banner is correct after you restart stage, and after you run git in another terminal.

Press enter on a conflicted file to open the resolve view. The view shows both sides of one conflict together, and a counter for how many conflicts the file has.

Keys Action
j / k Move between the two sides
space Take the side under the cursor
b Take both sides
h / l Go to the previous conflict or the next one
z Undo the last choice
esc Leave the view
One conflict, both sides. space takes the side under the cursor.

A resolved file is not a finished operation. Stage the file first, then continue.

  1. Press esc to go back to the files panel.
  2. Press space on the file to stage it.
  3. Press m to open the options.
  4. Press c to continue.
Stage the resolved file, then continue the merge from the m menu.

The banner goes away when the operation is complete.

Key Action Available in
c Continue Every paused operation
a Abort Every paused operation
s Skip this commit Rebase, cherry-pick, revert

A merge has no skip, because a merge has no queue of commits to skip.

CAUTION: Abort throws away the work of the whole operation. The repository goes back to the commit it started from.

A rebase replays your commits one at a time. A commit whose change is already upstream produces a conflict with nothing to resolve: both sides say the same thing. Press s to drop that one commit and continue with the rest.

The history commands stash your working tree first, and put it back when they finish. That second step can also conflict.

git reports this case with a zero exit code and writes no marker file, so stage matches the message text instead. This is the one place where stage reads git prose. It is safe because stage runs git with LC_ALL=C, so the message is always English.

Page Operation
Rewriting history Squash, fixup, reorder, drop
Patch building Move lines to another commit
Branches and remotes Merge, rebase, pull