The terminal blinked back at me. git rebase had gone through clean, the history looked perfect, and a few seconds later, kubectl apply pushed the changes live. No conflict, no warning, nothing but a quiet confidence in commands that felt routine. Until the service stopped responding.
Anyone who has used Git rebase knows it’s a scalpel. It rewrites history. Done right, it’s surgical. Done wrong, you’re left with fragments of commits in the wrong place. In a local workflow, you have a safety net. But combined with a kubectl deploy, mistakes travel straight to your running cluster. Code history isn’t the only thing rewritten—the state of production shifts before you even refresh your dashboard.
The real challenge is speed against certainty. Git rebase can keep your commit tree clean, make reviews easier, and simplify merges. But in CI/CD pipelines, that clean history can hide the fact that you just buried a bad commit inside what looks like a fresh, perfect change set. If kubectl runs right after, you’ve pushed an invisible problem into Kubernetes. Rollback is possible, but it’s also manual, and every minute counts.