DEV Community

Cover image for How to squash Git commits
Oleg Chursin
Oleg Chursin

Posted on • Edited on

How to squash Git commits

A really quick step-by-step guide on how to squash Git commits to make your PRs concise, easy to read, and hence easy to review.

Steps:

  • Make sure your branch is up to date with the main branch.
  • Run git rebase -i main.
  • You should see a list of commits, each commit starting with the word "pick".
  • Make sure the first commit says "pick" and change the rest from "pick" to "squash". -- This will squash each commit into the previous commit, which will continue until every commit is squashed into the first commit.
  • Save and close the editor (press Esc key, type :w and hit Enter key) -- save a file and quit vim / Vi by pressing Esc key, type :x and hit Enter key.
  • It will give you the opportunity to change the commit message.
  • Save and close the editor again.
  • Force push the squashed commit: git push --force-with-lease origin.

GitHub gist of the steps above

Top comments (2)

Collapse
 
shankarsridhar profile image
Shankar Sridhar

After making sure your branch is up to date with the remote(origin) master branch, you can also try this:

git reset --soft origin/master

This will let you add all the changes into a single commit.

Collapse
 
olegchursin profile image
Oleg Chursin

This looks like a nice short-cut if you need all changes in a single commit. ty Shankar