Linus Torvalds [off-list ref] writes:
Now, Junio has patches (maybe they even got merged in mainline) to relax
the "exactly the same" rule a bit, and instead try to merge any dirty
state into the branch you're switching to. Conceptually nothing changed:
dirty state is branchless, so when you switch to another branch, the dirty
state follows you.
FYI, I pushed this out, along with some other changes.
* checkout -m can be used to merge while switching branches.
* format-patch now always does --mbox and shows RFC2822 Date.
* clone --naked can be used for creating "project.git" style repository.
* octopus allows hand resolving in limited form.
* show-branch user interface updates.
* push --tags to push all tags; it does not fall back on "matching" refs.