How do I abandon a merge or a rebase?
Stop it. The repository goes back to where it started.
A merge, rebase, cherry-pick or revert that has stopped on a conflict can be abandoned, and the repository returns to the state it was in before it began.
That is worth knowing early, because the first difficult conflict tends to feel like a trap. It is not: stopping costs nothing, and the branches are exactly as they were.
While one is in flight the status bar says so, and its pull and push controls are replaced by Continue and Abort. Abort is the one that puts everything back.
After it has finished
A merge or rebase that completed is not abandoned, it is undone — the branch moved, and moving it back is a reset or a new branch at the old position. The old position is in the reflog: see find a commit that has disappeared.
What blocks finishing rather than abandoning
Finishing a GitFlow branch refuses while a merge is in progress, while there are conflicts, while tracked files have changes, and while you have unpushed commits. Those are the four things to clear before trying again.