user3803850 user3803850 - 2 months ago 7
Git Question

Git: How to squash all commits on branch

I make new branch from

master
with:

git checkout -b testbranch


I make 20 commits into it.

Now I want to squash those 20 commits. I do that with:

git rebase -i HEAD~20


What about if I don't know how many commits? Is there any way to do something like:

git rebase -i all on this branch

Answer

Another way to squash all your commits is to reset the index to master:

 git checkout yourBranch
 git reset $(git merge-base master yourBranch)
 git add -A
 git commit -m "one commit on yourBranch"

This isn't perfect as it implies you know from which branch "yourBranch" is coming from.
Note: finding that origin branch isn't easy/possible with Git (the visual way is often the easiest, as seen here).