0
0
Gitdevops~10 mins

Rebase vs merge mental model in Git - Visual Side-by-Side Comparison

Choose your learning style9 modes available
Process Flow - Rebase vs merge mental model
Start: Branch A and Branch B diverged
Option 1: Merge
Create a new merge commit
Branches combined with history preserved
End
Option 2: Rebase
Move Branch B commits on top of Branch A
Rewrite Branch B history
Linear history without merge commit
End
Shows two ways to combine branches: merge creates a new commit joining histories, rebase moves commits to create a straight line.
Execution Sample
Git
git checkout feature
# Option 1: git merge main
# Option 2: git rebase main
Switch to feature branch, then either merge main into it or rebase feature onto main.
Process Table
StepActionBranch State BeforeBranch State AfterResult
1Start with main and feature branches divergedmain: A-B-C feature: A-B-D-Emain: A-B-C feature: A-B-D-EBranches diverged at commit B
2Merge main into featurefeature: A-B-D-Efeature: A-B-D-E-MNew merge commit M combines C and E
3Feature branch now has merge commitfeature: A-B-D-E-Mfeature: A-B-D-E-MHistory shows branching and merging
4Reset feature branch to before mergefeature: A-B-D-E-Mfeature: A-B-D-EPrepare for rebase
5Rebase feature onto mainfeature: A-B-D-Efeature: A-B-C-D'-E'Commits D and E replayed on top of C as D' and E'
6Feature branch has linear historyfeature: A-B-C-D'-E'feature: A-B-C-D'-E'No merge commit, history looks like a straight line
7Endfeature: A-B-C-D'-E'feature: A-B-C-D'-E'Branches combined by rebase or merge
💡 Execution stops after feature branch is updated by merge or rebase.
Status Tracker
VariableStartAfter 2 (merge)After 5 (rebase)Final
feature branch commitsA-B-D-EA-B-D-E-MA-B-C-D'-E'A-B-C-D'-E'
Key Moments - 3 Insights
Why does merge create a new commit but rebase does not?
Merge combines histories by creating a new commit (row 2), while rebase moves commits to a new base, rewriting history without a merge commit (row 5).
What does it mean that rebase rewrites history?
Rebase creates new commits (D' and E') with the same changes but different parent commits, making history linear (row 5), unlike merge which preserves original commits.
When should I prefer merge over rebase?
Use merge to keep full history and show branch structure (row 3). Use rebase to keep history clean and linear (row 6).
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what is the feature branch state after step 2?
AA-B-D-E-M (with a merge commit)
BA-B-C-D'-E' (rebased commits)
CA-B-D-E (unchanged)
DA-B-C (main branch only)
💡 Hint
Check the 'Branch State After' column at step 2 in the execution table.
At which step does the feature branch history become linear?
AStep 2
BStep 5
CStep 3
DStep 1
💡 Hint
Look for when commits D and E are replayed on top of C as D' and E' in the execution table.
If you want to keep the branch history showing all merges, which command would you use?
Agit rebase main
Bgit merge main
Cgit reset main
Dgit checkout main
💡 Hint
Refer to the action in step 2 where a merge commit is created.
Concept Snapshot
Rebase vs Merge in Git:
- Merge combines branches by creating a new commit.
- Rebase moves commits to a new base, rewriting history.
- Merge preserves branch history and shows merges.
- Rebase creates a linear history without merge commits.
- Use merge for shared branches, rebase for clean history.
Full Transcript
This visual shows how Git combines branches using merge or rebase. Initially, main and feature branches diverge at commit B. Using merge, a new commit M joins the histories, preserving the branch structure. Using rebase, commits from feature are moved on top of main's latest commit C, creating new commits D' and E' and a straight history line. Merge keeps all commits and shows the branch split and join. Rebase rewrites commits to make history linear without merge commits. Choose merge to keep full history or rebase to keep history clean.