Git Rebase Interactive Workflow
Use interactive rebase to squash, reorder, or edit commits before merging a feature branch into main.
Objective
Clean up commit history on a feature branch before merging to maintain a readable main branch.
Environment
- A feature branch with multiple commits
- Git CLI with interactive rebase support
- Understanding of rebase commands
Steps
1. Start rebase
Run git rebase -i main to open the interactive rebase editor for the feature branch.
Expected state: An editor opens with all feature branch commits listed.
2. Edit commits
Use squash, reword, or drop to clean up the commit history as desired.
Expected state: The commit list is modified according to the rebase plan.
3. Complete rebase
Save and close the editor to apply the rebase, resolving conflicts if needed.
Expected state: The feature branch has a clean commit history.
4. Force push
Force push the rebased branch with git push --force-with-lease.
Expected state: The remote branch is updated with the clean history.
Decision points
Squash all commits into one?
- Yes, for simple features
- No, keep logical commits
Squash trivial commits; keep commits that represent logical, independently understandable changes.
Expected outcome
The feature branch has a clean, readable commit history ready for merge into main.
Verification
Run git log to confirm the commit history is clean; verify the branch builds and tests pass after rebase.
Cleanup
Use git rebase --abort to cancel the rebase if something goes wrong.
Clean history helps reviewers
A clean commit sequence makes code review faster and the project history easier to understand.
git rebase -i main
# In editor: pick, squash, reword as needed
git push --force-with-lease
Implementation Notes
This workflow provides a structured approach to ensure consistent results across team members and environments.
Common Pitfalls
Skipping verification steps or rushing through the process can lead to incomplete results. Always follow each step in order and verify before proceeding.