Skip to content

Branch operations

Drag one branch onto another to merge, rebase, fast-forward, or reset — plus everything else on the context menu.

Updated View as Markdown

Drag a branch onto another to merge, rebase, or reset

Drag and drop

Grab a branch pill — in the commit graph or in the branch navigator — and drop it onto another branch. GitLane checks how the two branches actually relate (probing fast-forward in both directions) and offers only the operations that make sense:

Offered When it makes sense
Fast-forward The target can advance to the source with no new commit
Merge The branches have diverged and you want a merge commit
Rebase You want the source’s commits replayed onto the target
Reset You want the branch pointer moved, discarding what’s ahead

You never have to remember which flag produces which outcome — the menu is derived from the actual relationship, not from a fixed list.

The chosen operation runs through your real git binary, so hooks, .gitconfig, signing, and the full conflict machinery all apply. If it stops on conflicts, GitLane switches into the conflict workspace — see Merge conflicts.

The context menu

Everything else is one right-click away in the graph:

  • Cherry-pick a commit onto the current branch
  • Revert a commit
  • Squash a multi-commit selection
  • Create a branch, tag, or worktree at any commit
  • Compare any two refs
  • Export a commit as a patch file

Reset, previewed

Reset is the one operation where “what exactly am I about to lose?” matters most, so GitLane answers it before you confirm: the dialog previews the commits that would fall away. The same applies to branch deletion, discard, and force-push.

If the repository changed underneath you between the preview and the confirm — say you committed from a terminal in between — the operation fails cleanly instead of acting on stale state.

More on the safety rails →

Pulling and pushing

Pull is fast-forward only, with explicit handling when the branches have diverged — you’re told what diverged and asked what to do, rather than getting a surprise merge commit.

Force-push always uses --force-with-lease, and previews the remote commits it would replace.

A background auto-fetch keeps remote-tracking branches current so the “behind by N” counts you’re looking at are real.

Navigation

Type to search…

↑↓ navigate↵ selectEsc close