Always double check remotes git remote -v Always track remotes git branch -u <remote>/<branch> Always fetch before status git fetch --all git status Always diff-so-fancy git dsf git dsf --cached Always fetch & merge, don't pull (gives opportunity to verify incoming changes) git fetch --all git dsf ..<remote>/<branch> git merge <remote>/<branch> Always push using full syntax (<source-branch>:<dest-branch>) git remote -v git push <remote> HEAD:<branch> Sometimes amend git log -3 git commit --amend git log -3 Sometimes reset and cherry-pick git reset --hard <remote>/<branch> git cherry-pick <commit> Always stash git stash save -u[--include-untracked] git stash save -k[--keep-index] git stash apply git stash drop