No. This does not safeguard any uncommitted files.
Leaving any files uncommitted before a complex operation in git is a really bad idea (make a temporary commit if necessary). It's almost impossible to completely lose committed data, but pretty easy to destroy uncommitted data.
This. I also do a `git diff > save.patch` if there is something uncommmited that i don't want to commit at the moment. A patch file feels more comfortable to me than git stash, as i can easily view the patch files, and reapply them with `patch -p1 < save.patch`
You can show the diff with `git stash show` or also apply your patch with `git apply save.patch`
No. Commit your changes and mark it. For instance by creating a branch.
git commit -a
git checkout -b before-complex-operation
...
To get back to where you were, git checkout before-complex-operation