Git stores the contents of files as objects called blobs
Git stores snapshots of the filesystem hierarchy in objects called trees,
which point to blobs (individual files) and other trees (subdirectories)
To build a sequential history and give context to snapshots, Git has objects
called commits, which point to trees (the files and directories) and other
commits (to build a history)
Branches and refs are human-readable labels to specific commits