Files
git-workshop/module-05-merge-conflicts/README.md
2026-01-04 17:53:41 +01:00

3.2 KiB

Module 06: Merge Conflicts

Learning Objectives

By the end of this module, you will:

  • Understand what merge conflicts are and why they occur
  • Identify merge conflicts in your repository
  • Read and interpret conflict markers
  • Resolve merge conflicts manually
  • Complete a merge after resolving conflicts

Challenge Description

You have a repository with a main branch and a feature branch called update-config. Both branches have modified the same configuration file in different ways, creating a merge conflict.

Your task is to:

  1. Attempt to merge the update-config branch into main
  2. Identify and understand the merge conflict
  3. Resolve the conflict by keeping both the timeout setting from main AND the debug setting from update-config
  4. Complete the merge with an appropriate commit message

Key Concepts

What Are Merge Conflicts?

A merge conflict occurs when Git cannot automatically combine changes from two branches because they modify the same part of the same file in different ways. When this happens, Git pauses the merge and asks you to manually resolve the conflict.

Conflict Markers

When a conflict occurs, Git adds special markers to the affected files:

<<<<<<< HEAD
Your current branch's changes
=======
The incoming branch's changes
>>>>>>> branch-name
  • <<<<<<< HEAD: Marks the beginning of your current branch's version
  • =======: Separates the two versions
  • >>>>>>> branch-name: Marks the end of the incoming branch's version

Resolving Conflicts

To resolve a conflict:

  1. Open the conflicted file in your editor
  2. Look for the conflict markers
  3. Decide which changes to keep (you can keep one side, the other, or combine both)
  4. Remove the conflict markers
  5. Stage the resolved file with git add
  6. Complete the merge with git commit

Useful Commands

# Merge a branch (may result in conflicts)
git merge <branch-name>

# Check the status during a conflict
git status

# See which files have conflicts
git diff --name-only --diff-filter=U

# View the conflict in detail
git diff

# After resolving, stage the file
git add <file>

# Complete the merge
git commit

# If you want to abort the merge
git merge --abort

# Visualize the branch history
git log --oneline --graph --all

Verification

Run the verification script to check your solution:

.\verify.ps1

The verification will check that:

  • The merge conflict was resolved
  • The merge was completed successfully
  • Both configuration settings were preserved correctly
  • The commit history shows the merge

Tips

  • Don't panic when you see a conflict - it's a normal part of working with Git
  • Read the conflict markers carefully to understand both versions
  • You can use git status to see which files have conflicts
  • Always test your code after resolving conflicts to ensure it still works
  • The conflict markers (<<<<<<<, =======, >>>>>>>) must be completely removed from the final file

What You'll Learn

Merge conflicts are inevitable when working on a team or even when working alone across multiple branches. Learning to resolve them confidently is an essential Git skill. This module teaches you the fundamentals of conflict resolution that you'll use throughout your development career.