The index lists every tracked path with its file mode and the id of its blob. git add updates it, git commit turns it into a tree, and git restore --staged pulls entries back out.