$ master > git checkout
$ git -version
git version 1.8.0
$
Semantically related changes should not be split across commits.
All changes in a commit should be semantically related.
A commit should not introduce compilation errors.
A commit should not break any existing tests nor add failing ones.
Commits should be ordered deliberately.
The order should be a trail of the programmer's thought process.
A commit message should include a short one-sentence summary.
A longer description can be added if more details are necessary.
Exists for a long period of time, sometimes for the entire project.
Multiple people or even the entire team collaborate on it.
Exists to accomplish one specific task, after which it gets disposed.
Used exclusively by its creator or shared among multiple people.