There are multiple ways of doing a squash.
Here’s how you can easily squash the current and all its immediate parent commits into a single commit in Git Extensions:
- Right click on a commit you wish to squash to and select “Reset the current branch to here”
- Select either “Soft reset” (retain staged files) or “Mixed reset” (unstage all files)
- Stage, if necessary
- Commit
Here’s an animation of the above:

Another way is to do an “interactive rebase” either
- via a command line (
git rebase -i, read docs), or - via UI (e.g. Git Extensions).
To do an interactive rebase in Git Extensions:
- Right click on a commit you wish to squash to and select “Rebase current branch on > Selected commit interactively…”
- In the presented dialog alter the history, such as choose which commits to squash or reword
- Save and close
Here’s an animation of the above:
