Squash and Merge
Definition
Combines all commits from a branch into one commit before merging into the main branch. It fits at the final step of a Pull Request.
The Problem That Led to It
Developers often make many small commits ("fix typo", "remove space", etc.). Merging all of them clutters project history, making it hard to understand what actually changed. Squash Merge was created to keep history clean.
What Problem It Solves
Turns many related commits into one meaningful commit.
What Happens If Not Used
The main branch may contain dozens of unnecessary commits, making history difficult to read.
Easy Wording
"Pack many small updates into one neat package."
Layman Example
You wrote 20 rough notes while preparing a report but submitted only the final report.
Technical Example
Before
main └── A
feature └── B └── C └── D
Merge →
A B C D
After Squash
A E (Add User Authentication)
Limitation
Individual commit history is lost.
Solution
Rebase and Merge keeps every commit while maintaining a clean timeline.