Everyone keeps saying “keep your Git history clean.” Squash, rebase, linearize. It looks neat in the git log.
But here’s the thing: in 2025 our biggest collaborators aren’t just humans, they’re AI tools. And those tools need the messy history: the failed attempts, the typos, the bad refactors. That’s the context they learn from.
When we squash everything into a perfect history, we’re deleting the very breadcrumbs that could help an agent explain a bug, trace a regression, or warn us we’re about to repeat an old mistake.
“Clean history” makes reviewers happy today. But it’s technical debt for tomorrow’s AI-assisted development
How exactly would it help to have a commit that introduces a problem and then another one that fixes it? How does leaving in a bad refactor, failed attempt, or typo help the AI tool with anything?