Interactive example · from Shipping Software with Git + Claude Code

The wall of diff

you

Good session: the retry logic, the config rename, and the new export flag all work. Commit it.

agent

Three hours of work, three unrelated changes, currently one big pile in the working tree.

Pick the agent's next move, then see where it leads:

you

The retry logic is looping forever in production. Revert it.

agent

The revert takes the config rename and the export flag with it: they're welded into the same commit. I'll have to revert all three, then re-apply two of them by hand from the old diff. Twenty minutes of surgery for what should have been one command.

the baseline

One commit, three purposes: revert stops being surgical, bisect stops being useful, and the 23-file diff was never really reviewable in the first place.

you

The retry logic is looping forever in production. Revert it.

agent

git revert a1b2c3d: done, retry gone, rename and flag untouched. And for next time: the redo branch starts from a clean history where the retry change is one readable diff.

correct

Three purposes, three commits: the bad one reverts in one command, the good ones stand, and each diff was small enough to actually read at review time.

agent

Done: 23 commits. Caveat I should flag: the retry change spans 6 of them, so commits 4 through 9 each leave the build broken until the next lands.

you

So bisect lands on a broken-by-construction commit, and reverting the retry means finding six needles.

plausible but wrong

Granularity by file, not by purpose: every commit is small and none is coherent. The unit of a commit is the change that stands together: builds green, reverts whole.