Open .git/ and you'll find:
HEAD — symbolic ref to your current branch
config — local config (user, remotes, aliases)
description — usually unused
objects/ — the object database (commits, trees, blobs, tags)
refs/ — branch and tag pointers
refs/heads/main is a 1-line file containing the latest commit hash for main.
index — the binary staging area
hooks/ — sample hook scripts
info/exclude — local-only ignore patterns (not committed)
logs/ — reflog data
packed-refs — when refs get packed for performance
Everything Git knows about your repo lives here. Delete .git/ and you're back to a regular directory. git init recreates this skeleton.
You can read these files directly. Try cat .git/HEAD to see HEAD's value.