Commits are immutable snapshots of the repository
Branches are named sequences of commits
Every object has a unique ID, derived from its content