Start a branch for each new feature.
git checkout -b <branch>
Publish your branch and set up tracking.
git push -u origin <branch>
Then when you’re done committing to it, rebase it on master, force push it.
git rebase master
git push -f
Then merge it.
git merge --no-ff <branch>
Or, if it’s a single commit:
git merge <branch>
Stash your changes to pull or move to a different branch when you have changes in the working directory.
git stash
Then, to see stashes:
git stash list
Then, to use a stash:
git stash pop <stash> (default is last)
Fancy logging with graph:
git log --oneline --abbrev-commit --graph