this fall I worked with the core Git folks on writing an official data model for Git and it just got merged! I learned a few new things from writing it. https://github.com/git/git/blob/master/Documentation/gitdatamodel.adoc

here are some things I learned while writing this:

1. Commits can have "extra fields", for example a GPG signature

2. I always thought entries in a tree had 4 fields, but there are actually only 3 (file name, file type, and object ID)

3. Git sometimes prints out file types as a bit set (100644), but it's really more like an enum, since there are only 5 file types (regular file, executable file, symlink, directory, and gitlink)

(2/?)

4. In Git's index (aka staging area), every file has a "stage number". This is usually 0, but when there's a merge conflict then there can be 4 versions of the same file in the "staging area"

5. Branches are not necessarily always stored as "every branch is a file in .git", there's also a reftable backend https://about.gitlab.com/blog/a-beginners-guide-to-the-git-reftable-format/ which fixes some problems with "branches are files", like how if you're on a case-insensitive filesystem it means your branches are also case-insensitive

(3/?)

A beginner's guide to the Git reftable format

In Git 2.45.0, GitLab upstreamed the reftable backend to Git, which completely changes how references are stored. Get an in-depth look at the inner workings of this new format.

about.gitlab.com
in any case the things I learned are mostly trivia, the real point was to have an explanation of the basics :)
@b0rk a trivia game show based on git trivia would be fun (or not)