SyntaxStudy
Sign Up
Git Interactive Rebase: Squash and Reorder
Git Beginner 11 min read

Interactive Rebase: Squash and Reorder

Interactive rebase (git rebase -i) lets you edit, squash, reorder, or drop commits before sharing them. This is how you clean up a messy feature branch into a few clear, well-described commits before opening a pull request.

Example
# Interactively edit the last 4 commits:
git rebase -i HEAD~4

# Git opens your editor with a list like:
# pick a1b2c3 Add login form
# pick d4e5f6 Fix typo
# pick g7h8i9 WIP: more login work
# pick j1k2l3 Finish login feature

# Change 'pick' to one of these commands:
# pick   — keep as-is
# reword — keep, but edit the commit message
# edit   — pause rebase to amend the commit
# squash — merge into the PREVIOUS commit (keeps both messages)
# fixup  — like squash, but discard this commit's message
# drop   — remove the commit entirely

# Example: squash 4 commits into 1:
# pick a1b2c3 Add login form
# squash d4e5f6 Fix typo
# squash g7h8i9 WIP: more login work
# squash j1k2l3 Finish login feature

# Save and close the editor.
# Git opens another editor to write the combined message.

# After interactive rebase on a pushed branch:
git push --force-with-lease origin feature/login

# Squash all feature branch commits at merge time:
git merge --squash feature/login
git commit -m "feat: add user login"