git rebase
- until today, I did not understand the power of rebase. It seems like, in a larger scale, something you'd almost want to do atomically as well. It allows you to make sure your branch can still operate with master.
Rebase, in my mind, does a soft 'pull', which then allows the work on your branch to stay almost up to date with master, to check that it still is compatible, rather than merging into incompatible master.
I actually use git stash
all the time. If I've made a change that I no longer wish to keep, or that isn't compatible with the code, and it's not hugely important to keep, I stash it, pull down master, and maybe restart.
The difference between them is to change or not change head, stage (index), working directory. Git reset --hard w