Problem:
We are in the middle of something in development and your customer calls you telling that there is a critical problem in production that must be solved asap.
Solution:
branch:development$ git stash >> This will record our changes (not commit) in stash and rever to HEAD branch:development$ git checkout production >> Change to production branch - Make the changes you need in production branch:production$ git checkout development >> Get back to development again branch:development$ git merge production >> We want the changes made in production applied in development branch:development$ git stash pop >> Reapply our stash (there is also "apply" instead of "pop". Apply don't delete the last stash while pop do)