Please explain squashing to me


I'm relatively new to SourceTree. I've used it for a few months now and the I feel I understand the basic functionalities and features, but there are other features I'm still trying to understand.

In this case, I'm trying to understand how squash works.

It seems I can only squash commits once they're pushed to the master repository, not before. Is this true?

Also, why can I only squash through the rebasing interface? Squashing isn't necessarily rebasing, is it? If I click on the oldest commit, and say "rebase children of...", I can then squash all later commits to that one. But then what happens once I say "OK"? Will it rebase my code to that oldest commit? WITH the later ones squashed into it (effectively meaning there should be no change)? And what if I say "cancel"? It seems to undo my squash. So I can't squash without rebasing.

Can someone please explain how this works? Thanks.

1 answer

Suggest an answer

Log in or Sign up to answer
Community showcase
Published yesterday in Agile

Are you a Jira Service Desk agent? We want to talk to you!

Are you a whiz at handling tickets and looking at how you can further optimize your workflow with automation? Do you tackle detailed customer support questions while simultaneously getting flooded wi...

24 views 0 2
Read article

Atlassian User Groups

Connect with like-minded Atlassian users at free events near you!

Find a group

Connect with like-minded Atlassian users at free events near you!

Find my local user group

Unfortunately there are no AUG chapters near you at the moment.

Start an AUG

You're one step closer to meeting fellow Atlassian users at your local meet up. Learn more about AUGs

Groups near you