Bird
Raised Fist0
Gitdevops~5 mins

Rebase vs merge mental model in Git - Quick Revision & Key Differences

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Recall & Review
beginner
What does git merge do in simple terms?
It combines the histories of two branches by creating a new commit that joins them together, keeping all previous commits intact.
Click to reveal answer
beginner
What is the main effect of git rebase?
It moves or 'replays' your branch commits on top of another branch, creating a cleaner, linear history without merge commits.
Click to reveal answer
intermediate
How does git merge affect commit history compared to git rebase?
git merge preserves the exact history and shows branches joining, while git rebase rewrites history to look like a straight line.
Click to reveal answer
intermediate
Why might you choose git rebase over git merge?
To keep a clean, easy-to-follow project history without extra merge commits, making it look like changes happened in a straight line.
Click to reveal answer
advanced
What is a risk of using git rebase on shared branches?
Rebasing rewrites history, so if others share the branch, it can cause confusion and conflicts when they try to update their copies.
Click to reveal answer
What does git merge create when combining branches?
ADeletes the old branch
BA new commit that joins the branches
CRewrites all commits in a linear order
DRemoves conflicts automatically
Which command rewrites commit history to make it linear?
Agit merge
Bgit clone
Cgit rebase
Dgit commit
Why should you be careful using git rebase on shared branches?
AIt can cause conflicts by rewriting history others rely on
BIt slows down the repository
CIt merges branches automatically
DIt deletes the branch permanently
Which is a benefit of using git merge?
ADeletes old commits
BCreates a linear history
CRemoves all conflicts
DKeeps all branch history intact
What is a visual difference in history between merge and rebase?
AMerge shows branches joining; rebase shows a straight line
BMerge deletes commits; rebase duplicates commits
CMerge rewrites history; rebase preserves history
DMerge creates conflicts; rebase removes branches
Explain in your own words the difference between git merge and git rebase.
Think about how the project history looks after each command.
You got /5 concepts.
    When would you prefer to use git rebase instead of git merge?
    Consider the goal of a tidy project history.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main difference between git merge and git rebase?
      easy
      A. git merge rewrites commit messages; git rebase preserves commit messages.
      B. git merge deletes the source branch; git rebase deletes the target branch.
      C. git merge only works on remote branches; git rebase only works on local branches.
      D. git merge combines histories preserving all commits; git rebase rewrites history to create a linear sequence.

      Solution

      1. Step 1: Understand git merge behavior

        git merge combines two branches by creating a new commit that preserves the history of both branches without changing existing commits.
      2. Step 2: Understand git rebase behavior

        git rebase moves or reapplies commits from one branch onto another, rewriting history to make it look like a straight line.
      3. Final Answer:

        git merge combines histories preserving all commits; git rebase rewrites history to create a linear sequence. -> Option D
      4. Quick Check:

        Merge preserves history, rebase rewrites it [OK]
      Hint: Merge keeps history; rebase rewrites it linearly [OK]
      Common Mistakes:
      • Thinking merge deletes branches
      • Believing rebase only works on remote branches
      • Confusing which command rewrites history
      2. Which of the following is the correct syntax to rebase the current branch onto main?
      easy
      A. git rebase main
      B. git merge main
      C. git rebase origin/main
      D. git checkout main && git rebase

      Solution

      1. Step 1: Identify the command to rebase current branch

        The command git rebase main rebases the current branch onto the main branch.
      2. Step 2: Check other options for correctness

        git merge main merges, not rebases; git rebase origin/main rebases onto remote tracking branch which may be outdated; git checkout main && git rebase is invalid syntax.
      3. Final Answer:

        git rebase main -> Option A
      4. Quick Check:

        Rebase current branch onto main = git rebase main [OK]
      Hint: Use 'git rebase branch-name' to rebase current branch [OK]
      Common Mistakes:
      • Using merge instead of rebase
      • Rebasing onto remote branch without fetching
      • Incorrect chaining of commands
      3. Given the following commands executed in order on branch feature:
      git checkout feature
      git rebase main
      git log --oneline --graph
      What will the commit history look like compared to using git merge main instead?
      medium
      A. A linear history with feature commits on top of main commits.
      B. A merge commit combining main and feature histories.
      C. No change in history; feature branch remains separate.
      D. Feature branch commits are deleted.

      Solution

      1. Step 1: Understand effect of git rebase main on feature branch

        Rebasing moves feature commits to be based on the latest main commits, creating a straight, linear history.
      2. Step 2: Compare with git merge main effect

        Merging creates a new merge commit that combines histories, preserving the branch structure and showing a branch point.
      3. Final Answer:

        A linear history with feature commits on top of main commits. -> Option A
      4. Quick Check:

        Rebase = linear history; merge = merge commit [OK]
      Hint: Rebase = linear history; merge = merge commit [OK]
      Common Mistakes:
      • Thinking rebase creates merge commits
      • Believing history stays unchanged after rebase
      • Assuming commits are deleted after rebase
      4. You ran git rebase main on your feature branch but got conflicts. After resolving conflicts, which command should you run to continue the rebase?
      medium
      A. git commit -m 'resolved conflicts'
      B. git merge --continue
      C. git rebase --continue
      D. git rebase --abort

      Solution

      1. Step 1: Identify the correct command to continue rebase after conflicts

        After resolving conflicts during a rebase, git rebase --continue tells Git to proceed with applying remaining commits.
      2. Step 2: Understand other options

        git merge --continue is for merge conflicts, not rebase; git commit -m is manual commit but rebase expects --continue; git rebase --abort cancels the rebase.
      3. Final Answer:

        git rebase --continue -> Option C
      4. Quick Check:

        Continue rebase after conflicts = git rebase --continue [OK]
      Hint: Use 'git rebase --continue' after resolving conflicts [OK]
      Common Mistakes:
      • Using merge commands during rebase
      • Trying to commit manually instead of continuing
      • Aborting instead of continuing rebase
      5. You want to update your feature branch with the latest changes from main but keep a clean, linear history without merge commits. Which sequence of commands achieves this safely?
      hard
      A. git checkout feature; git merge origin/main
      B. git checkout feature; git fetch origin; git rebase origin/main
      C. git checkout main; git pull; git checkout feature; git merge main
      D. git checkout feature; git pull origin main

      Solution

      1. Step 1: Fetch latest changes from remote main branch

        git fetch origin updates local remote tracking branches without changing working branches.
      2. Step 2: Rebase feature branch onto updated origin/main

        git rebase origin/main reapplies feature commits on top of latest main commits, keeping history linear and clean.
      3. Final Answer:

        git checkout feature; git fetch origin; git rebase origin/main -> Option B
      4. Quick Check:

        Fetch then rebase for clean update [OK]
      Hint: Fetch first, then rebase onto remote main for clean history [OK]
      Common Mistakes:
      • Merging instead of rebasing for linear history
      • Pulling directly on feature branch causing merge commits
      • Not fetching latest remote changes before rebase