I re-discovered this the other day while committing something for PostgreSQL. Say you're working on something and want to pull in the latest changes from a remote. You do "'git pull" but it fails telling you that there would be a conflict. Someone has changed one of the files you're working on. You could manually save out your changes, do "git reset", merge in the remote changes, and then reapply your changes. Or you can make git to do the heavy lifting for you. In these circumstances, "git stash" is your friend. You do "git stash save" and your changes are stashed away safely and your working directory and index are in a clean state. Now "git pull" should work. Then you can do "git stash pop" (there is a stack of stashes) and reapply your changes on top of the newly up to date repo. As with all things git, there are lots of switches and bells and whistles, but just this simple use is really quite nice.