Bird
Raised Fist0
Gitdevops~20 mins

Reading conflict markers in Git - Practice Problems & Coding Challenges

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
Challenge - 5 Problems
🎖️
Conflict Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
💻 Command Output
intermediate
1:30remaining
Identify the conflict content from Git conflict markers
Given the following conflict markers in a file after a merge conflict, what is the content from the current branch (HEAD)?
<<<<<<< HEAD
Line A
=======
Line B
>>>>>>> feature-branch
Git
<<<<<<< HEAD
Line A
=======
Line B
>>>>>>> feature-branch
ANo content, conflict markers only
BLine A
CLine A and Line B combined
DLine B
Attempts:
2 left
💡 Hint
The content between <<<<<<< HEAD and ======= is from the current branch.
💻 Command Output
intermediate
1:30remaining
What does Git show after a merge conflict?
After running git merge feature, you see conflict markers in a file:
<<<<<<< HEAD
int x = 5;
=======
int x = 10;
>>>>>>> feature

What does this indicate?
Git
git merge feature
AThe feature branch was deleted
BThe merge was successful with no conflicts
CThe file has conflicting changes between current branch and feature branch
DThe file was unchanged
Attempts:
2 left
💡 Hint
Conflict markers appear only when Git cannot automatically merge changes.
Troubleshoot
advanced
2:00remaining
Resolving conflicts with multiple conflict markers
You see this in a file after a merge:
<<<<<<< HEAD
Line 1
=======
Line 1 modified
>>>>>>> feature

Some other text

<<<<<<< HEAD
Line 2
=======
Line 2 modified
>>>>>>> feature

What is the correct way to resolve these conflicts?
Git
<<<<<<< HEAD
Line 1
=======
Line 1 modified
>>>>>>> feature

Some other text

<<<<<<< HEAD
Line 2
=======
Line 2 modified
>>>>>>> feature
AEdit each conflict section to choose or combine changes, then remove all conflict markers
BDelete the entire file and recreate it
CIgnore the conflict markers and commit the file as is
DRun 'git reset --hard' to discard all changes
Attempts:
2 left
💡 Hint
You must manually fix each conflict section and remove markers before committing.
Best Practice
advanced
1:30remaining
Best practice to avoid long conflict markers in files
Which practice helps reduce the chance of large conflict markers appearing in files during merges?
AAlways delete conflicting files and recreate them
BAvoid committing code for long periods
CUse only one branch for all development
DCommit small, frequent changes and pull updates often
Attempts:
2 left
💡 Hint
Frequent syncing helps keep branches aligned.
🧠 Conceptual
expert
2:00remaining
Understanding nested conflict markers in Git
Is it possible for Git to produce nested conflict markers (conflict markers inside conflict markers) in a file after a merge? Why or why not?
AYes, but only if manual edits introduce nested markers
BYes, Git can nest conflict markers if multiple merges overlap
CNo, Git never nests conflict markers; each conflict is separate and flat
DNo, Git removes all conflict markers automatically
Attempts:
2 left
💡 Hint
Think about how conflict markers are generated and edited.

Practice

(1/5)
1. What do conflict markers in a Git file indicate?
easy
A. They show where changes from different branches clash in the file.
B. They mark lines that are deleted permanently.
C. They highlight syntax errors in the code.
D. They indicate lines that are ignored by Git.

Solution

  1. Step 1: Understand the purpose of conflict markers

    Conflict markers appear when Git cannot automatically merge changes from different branches.
  2. Step 2: Identify what conflict markers show

    They highlight the exact lines where changes from two sources conflict, so you can decide how to fix them.
  3. Final Answer:

    They show where changes from different branches clash in the file. -> Option A
  4. Quick Check:

    Conflict markers = show clashes [OK]
Hint: Conflict markers always show merge clashes in files [OK]
Common Mistakes:
  • Thinking conflict markers show deleted lines
  • Confusing conflict markers with syntax errors
  • Believing conflict markers mark ignored lines
2. Which of the following is the correct way conflict markers appear in a Git file?
easy
A. >>>>>> HEAD Your changes here ====== Incoming changes here <<<<<<< branch-name
B. <<<<<<< HEAD Your changes here ======= Incoming changes here >>>>>>> branch-name
C. <<<<<<< branch-name Incoming changes here ======= Your changes here >>>>>>> HEAD
D. ====== Your changes here <<<<<<< HEAD Incoming changes here >>>>>>> branch-name

Solution

  1. Step 1: Recall the standard conflict marker format

    Git uses <<<<<<< HEAD to start your changes, ======= to separate, and >>>>>>> branch-name to end.
  2. Step 2: Match the correct sequence

    <<<<<<< HEAD Your changes here ======= Incoming changes here >>>>>>> branch-name matches this exact format with your changes first, separator, then incoming changes.
  3. Final Answer:

    <<<<<<< HEAD Your changes here ======= Incoming changes here >>>>>>> branch-name -> Option B
  4. Quick Check:

    Conflict markers start with <<<<<<< HEAD [OK]
Hint: Conflict markers start with <<<<<<< HEAD and end with >>>>>>> branch-name [OK]
Common Mistakes:
  • Swapping HEAD and branch-name positions
  • Using wrong number of < or > symbols
  • Mixing up the order of your and incoming changes
3. Given this conflict marker snippet in a file:
<<<<<<< HEAD
int x = 5;
=======
int x = 10;
>>>>>>> feature-branch
What will be the value of x after you manually choose the incoming change and save?
medium
A. 15
B. 5
C. 10
D. Conflict remains, no value assigned

Solution

  1. Step 1: Identify the incoming change section

    The incoming change is after the ======= marker, which is int x = 10;.
  2. Step 2: Understand manual conflict resolution

    Choosing the incoming change means keeping int x = 10; and removing conflict markers.
  3. Final Answer:

    10 -> Option C
  4. Quick Check:

    Incoming change value = 10 [OK]
Hint: Incoming changes are after ======= marker [OK]
Common Mistakes:
  • Choosing the code before ======= instead of after
  • Leaving conflict markers in the file
  • Assuming both values apply simultaneously
4. You see this conflict marker in your file:
<<<<<<< HEAD
console.log('Hello');
=======
console.log('Hi');
>>>>>>> update-branch
After editing, you accidentally leave the conflict markers in the file and commit. What problem will this cause?
medium
A. The conflict markers will be ignored and code runs fine.
B. Git will automatically fix the conflict on next pull.
C. Git will delete the file on next merge.
D. The code will have syntax errors and may not run.

Solution

  1. Step 1: Understand what conflict markers are

    Conflict markers are not valid code; they are special symbols for humans to resolve conflicts.
  2. Step 2: Effect of leaving markers in code

    If left in the file, the code will have syntax errors and likely fail to run or compile.
  3. Final Answer:

    The code will have syntax errors and may not run. -> Option D
  4. Quick Check:

    Leaving markers = syntax errors [OK]
Hint: Remove conflict markers before committing to avoid errors [OK]
Common Mistakes:
  • Assuming Git fixes conflicts automatically after commit
  • Thinking conflict markers are comments
  • Believing code runs fine with markers present
5. You have this conflict in a file:
<<<<<<< HEAD
function greet() {
  return 'Hello';
}
=======
function greet() {
  return 'Hi';
}
>>>>>>> feature
You want to combine both greetings so the function returns both messages separated by a comma. How should you edit the file to resolve the conflict correctly?
hard
A. Replace the conflict markers with: function greet() { return 'Hello, Hi'; }
B. Keep only the HEAD version: function greet() { return 'Hello'; }
C. Keep only the feature version: function greet() { return 'Hi'; }
D. Leave the conflict markers and both versions as is.

Solution

  1. Step 1: Understand the goal to combine greetings

    You want the function to return both messages, so you must merge the changes manually.
  2. Step 2: Edit the file by removing conflict markers and combining lines

    Replace the conflict markers and both versions with a single function returning 'Hello, Hi'.
  3. Final Answer:

    Replace the conflict markers with: function greet() { return 'Hello, Hi'; } -> Option A
  4. Quick Check:

    Combine changes by editing and removing markers [OK]
Hint: Edit conflict markers out and combine code as needed before commit [OK]
Common Mistakes:
  • Leaving conflict markers in the file
  • Choosing only one version without combining
  • Not saving changes before committing