Git has two kinds of commands: “porcelain” and “plumbing”.
I’ve known these terms for a long time, but recently learned I was misusing them. It stops now!
“Porcelain” commands are meant for end users to call. git-log, git-show, and git-bisect are a few.
“Plumbing” commands are meant for scripts to call and are considered more stable. Commands you’ve likely never heard of like git-update-ref and git-write-tree are plumbing commands.
See man git for more info.