Rebasing
Replaying your commits on top of someone else's, and what that costs.
Rebasing replays the commits that are only on your branch on top of another branch, as new commits; what a rebase is shows what that does to the history and what it costs. The short version is the usual rule of thumb: rebase work that only you have, merge work that other people have.
Innesta’s own merge still makes a merge
commit — it passes --no-ff — so rebasing first does not remove the join, it
removes the interleaving.
After a push
If you have already pushed the branch, the remote still has the old commits, and sending the rebased version needs a force push with lease.
Conflicts during a rebase
A rebase can stop more than once, each commit being a separate chance to conflict. Innesta shows the same three-pane editor each time, and Continue carries on to the next commit.
A rebase Innesta started keeps the signing choice that was in force when it began, so a branch does not come out signed in patches. A rebase started elsewhere keeps whatever policy Git was given at the time.
Getting out
A rebase in progress can be abandoned, which puts the branch back where it was. And if one finishes and you wish it had not, the commits it replaced are still in the reflog.