I always do git status before pushing, to make sure I did not miss anything in the "to add" file list.
The output is quite explanatory:
$ git status
On branch XXX
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: YYY
Untracked files:
(use "git add <file>..." to include in what will be committed)
ZZZ1
ZZZ2
Then, it is also good to have some kind of staging environment that is shared with everyone. This way, when you push you also make sure the staging environment is also stable, so others will have a working example of your recent changes:
$ git checkout staging
$ git pull --rebase
$ git merge <your_branch>
$ git push