Long-running branches had grown into a tangle of conflicts. The main branch had moved on, and what used to be a small gap was now a canyon. You could merge. You could fight through endless conflicts. Or you could rebase—a surgical rewrite that cleans history and bridges years of changes without dragging dead weight.
Git rebase on a multi-year deal is not a casual move. It’s high-stakes. Misuse it and you rewrite history in a way that burns your team. Use it right, and you give your codebase a single, clean timeline that reads like a carefully planned book instead of a chaotic diary. Commits flow in order. Changes make sense. Blame stays accurate. And bloat disappears.
The key: break the monster into manageable steps.
- Identify the target branch where truth lives.
- Create a safe branch—never work against the only copy.
- Rebase in chunks. Year by year. Quarter by quarter. Let CI run after each phase so the blast radius is small.
- Resolve conflicts in context, not as an avalanche at the end.
- Squash or keep commits according to the story you want the repository to tell.
For giant timelines, an interactive rebase is essential. You control commit order, message clarity, and what gets thrown away. Over multi-year histories, rebase can surface old mistakes and make them easy to prune. It also reveals forgotten complexity that merges simply hide.