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 is a merge strategy in Git?
A merge strategy is the method Git uses to combine changes from different branches into one. It decides how to integrate the histories and content.
Click to reveal answer
intermediate
Explain the recursive merge strategy.
The recursive strategy is Git's default. It handles two-parent merges by creating a new merge commit that combines changes from both branches, resolving conflicts if needed.
Click to reveal answer
intermediate
What does the ours merge strategy do?
The 'ours' strategy keeps the current branch's content and ignores changes from the other branch during a merge. It is useful to override changes.
Click to reveal answer
advanced
Describe the octopus merge strategy.
The octopus strategy merges more than two branches at once. It works best when there are no conflicts and creates a single merge commit.
Click to reveal answer
beginner
What is a fast-forward merge?
A fast-forward merge happens when the current branch has no new commits since branching. Git just moves the pointer forward without creating a merge commit.
Click to reveal answer
Which merge strategy is the default in Git?
Arecursive
Bours
Coctopus
Dfast-forward
✗ Incorrect
The recursive strategy is the default merge method Git uses for two-parent merges.
What does a fast-forward merge do?
ACreates a new merge commit
BMoves the branch pointer forward without a merge commit
CIgnores changes from the other branch
DMerges multiple branches at once
✗ Incorrect
Fast-forward merges move the branch pointer forward when no new commits exist on the current branch.
When is the octopus merge strategy used?
ATo keep only the current branch's changes
BTo merge two branches with conflicts
CTo merge multiple branches at once without conflicts
DTo rebase commits
✗ Incorrect
Octopus merges multiple branches simultaneously and works best when there are no conflicts.
What happens with the 'ours' merge strategy?
AKeeps changes from the current branch only
BCreates a merge commit combining both branches
CKeeps changes from the other branch
DDeletes the current branch
✗ Incorrect
'Ours' strategy keeps the current branch's content and ignores the other branch's changes.
Which merge strategy creates a new commit combining two branches?
Afast-forward
Boctopus
Cours
Drecursive
✗ Incorrect
The recursive strategy creates a new merge commit combining changes from both branches.
Describe the main differences between fast-forward and recursive merge strategies in Git.
Think about whether a new commit is created or not.
You got /4 concepts.
Explain when and why you might use the 'ours' merge strategy.
Consider a situation where you want to discard incoming changes.
You got /4 concepts.
Practice
(1/5)
1. What does the --no-ff option do when merging branches in Git?
easy
A. It creates a merge commit even if a fast-forward merge is possible.
B. It squashes all commits into one before merging.
C. It deletes the source branch after merging.
D. It aborts the merge if conflicts are found.
Solution
Step 1: Understand fast-forward merges
A fast-forward merge moves the branch pointer forward without creating a new commit if no divergent changes exist.
Step 2: Effect of --no-ff
The --no-ff option forces Git to create a merge commit even if a fast-forward is possible, preserving branch history.
Final Answer:
It creates a merge commit even if a fast-forward merge is possible. -> Option A
Quick Check:
--no-ff keeps history with merge commit [OK]
Hint: Remember: --no-ff always makes a merge commit [OK]
Common Mistakes:
Confusing --no-ff with --squash
Thinking it deletes branches
Assuming it aborts on conflicts
2. Which of the following is the correct syntax to perform a squash merge of branch feature into main?
easy
A. git merge --squash feature
B. git merge feature --no-ff
C. git merge --fast-forward feature
D. git merge --abort feature
Solution
Step 1: Identify squash merge syntax
The --squash option is used with git merge to combine all commits from the source branch into one commit on the target branch.
Step 2: Check command correctness
git merge --squash feature is the correct syntax to squash merge the feature branch into the current branch.
Final Answer:
git merge --squash feature -> Option A
Quick Check:
Squash merge syntax = git merge --squash [OK]
Hint: Use --squash right after git merge for squash merges [OK]
Common Mistakes:
Placing --no-ff instead of --squash
Using --abort which cancels merges
Assuming --fast-forward is a valid option
3. Given the following commands run on branch main:
git merge feature
If feature has 3 commits and no conflicts, what will be the result in the commit history?
medium
A. A single new merge commit combining all changes from feature.
B. Merge aborted due to conflicts.
C. Three separate commits from feature added to main with no merge commit.
D. No new commits; main pointer moves forward (fast-forward).
Solution
Step 1: Understand default merge behavior
By default, if the main branch has no new commits since branching, Git performs a fast-forward merge, moving the main pointer forward.
Step 2: Analyze the scenario
Since feature has 3 commits and main has no new commits, Git will fast-forward main to feature's tip without creating a merge commit.
Final Answer:
No new commits; main pointer moves forward (fast-forward). -> Option D
Quick Check:
Default merge with no divergence = fast-forward [OK]
Hint: If no new commits on main, merge fast-forwards [OK]
Common Mistakes:
Assuming a merge commit is always created
Thinking commits are duplicated
Confusing conflicts with no conflicts
4. You tried to merge branch feature into main using git merge feature, but Git reports conflicts. What is the best way to resolve this?
medium
A. Delete the feature branch and start over.
B. Run git merge --abort to cancel the merge and lose changes.
C. Manually edit conflicting files, then run git add and git commit.
D. Use git reset --hard to force merge.
Solution
Step 1: Understand merge conflicts
Conflicts occur when Git cannot automatically combine changes. Manual intervention is needed to fix conflicting files.
Step 2: Resolve conflicts properly
Edit the conflicting files to fix issues, then stage changes with git add and complete the merge with git commit.
Final Answer:
Manually edit conflicting files, then run git add and git commit. -> Option C
Quick Check:
Resolve conflicts manually, then add and commit [OK]
Hint: Fix conflicts manually, then add and commit [OK]
Common Mistakes:
Aborting merge loses progress
Deleting branches unnecessarily
Using reset which discards changes
5. You want to merge a long-lived feature branch into main but keep the commit history clean with a single commit representing all changes. Which merge strategy should you use and what is the correct sequence?
hard
A. Use git merge --no-ff feature to keep all commits and a merge commit.
B. Use git merge --squash feature then commit manually.
C. Use git rebase main feature then fast-forward merge.
D. Delete feature and copy files manually.
Solution
Step 1: Identify goal - single commit for all changes
Squash merge combines all commits from the feature branch into one commit on main, keeping history clean.
Step 2: Correct merge sequence
Run git merge --squash feature to prepare changes, then create a new commit manually with git commit.
Final Answer:
Use git merge --squash feature then commit manually. -> Option B
Quick Check:
Squash merge + manual commit = single clean commit [OK]
Hint: Squash merge then commit for one clean commit [OK]