How many times a day do you ask yourself:

"Wait, have I pushed these changes yet? Is my teammate's code merged in? Where exactly am I relative to the repo?"

If you're like most developers, you probably type git status (which often lies or gives too little info) or struggle to remember that complex git log visualization command you saw on Stack Overflow three years ago.

Why do we make simple questions so hard to answer?


The Problem: The "Manual Mode" Trap

The default Git experience forces you to be explicit about everything. It assumes you want full control every single time.

Want to know how many commits you're ahead or behind origin/main? You usually have to type something like:

bash

gitlog --graph --oneline --left-right --decorate origin/main...HEAD

Who has time to memorize that?

And even if you do, what if you're working on a feature branch tracking origin/feature-login? You have to manually type that upstream branch name every time.

It's repetitive, error-prone, and breaks your flow state.

This is "Configuration" hell—you're constantly configuring the command to do the one thing you do 99% of the time.


The "Aha!" Moment: Convention over Configuration

There's a software design principle called Convention over Configuration.

Think of it like a Save Game button.