data -> tree, identified by checksum metadata -> tree, identified by checksum data + metadata -> tree, identified by checksum data + metadata reference -> commit, identified by checksum version -> branch HEAD, identified by version_id (as branch name)