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.