...
- Don't split a single logical change into several commits. For example, the implementation of a feature and the corresponding tests should be in the same commit.
- If you are adding or changing functionality, your commit should include new or modified tests to cover the change.
- Commit early and often. Small, self-contained commits are easier to understand and revert when something goes wrong.
- Commits should be ordered logically. For example, if commit X depends on changes done in commit Y, then commit Y should come before commit X.
...