Bird
Raised Fist0
Gitdevops~3 mins

Ours vs theirs in conflicts in Git - When to Use Which

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
The Big Idea

Ever lost hours fixing messy code conflicts? Discover how 'ours' and 'theirs' save your day!

The Scenario

Imagine you and your friend are both editing the same paragraph in a shared document at the same time. When you try to combine your changes, the document gets messy and confusing.

The Problem

Manually figuring out which changes to keep is slow and confusing. You might accidentally erase important updates or create a jumbled mess that breaks the flow.

The Solution

Using 'ours' and 'theirs' in Git helps you quickly decide which version of the conflicting changes to keep, making the fix clear and fast without guesswork.

Before vs After
Before
Edit file to fix conflicts by hand, then git add and commit
After
git checkout --ours <file>
git add <file>
git commit
# or
git checkout --theirs <file>
git add <file>
git commit
What It Enables

This lets you resolve conflicts confidently and quickly, keeping your project moving forward smoothly.

Real Life Example

When two developers update the same function differently, using 'ours' or 'theirs' helps pick the right version without hours of manual merging.

Key Takeaways

Manual conflict fixes are slow and error-prone.

'Ours' and 'theirs' commands speed up conflict resolution.

They help keep the best changes and avoid confusion.

Practice

(1/5)
1. In a Git merge conflict, what does ours refer to?
easy
A. A backup copy of the file before the merge
B. The version of the file in the branch you are merging
C. The common ancestor version of the file
D. The version of the file in your current branch

Solution

  1. Step 1: Understand the meaning of 'ours' in Git conflicts

    'Ours' means the version of the file in your current branch where you started the merge.
  2. Step 2: Differentiate from 'theirs'

    'Theirs' refers to the version from the branch you are merging into your current branch.
  3. Final Answer:

    The version of the file in your current branch -> Option D
  4. Quick Check:

    Ours = current branch version [OK]
Hint: Ours = your branch, theirs = merging branch [OK]
Common Mistakes:
  • Confusing 'ours' with 'theirs'
  • Thinking 'ours' means the common ancestor
  • Assuming 'ours' is a backup copy
2. Which Git command correctly chooses the 'theirs' version of a conflicted file named app.js?
easy
A. git checkout --ours app.js
B. git checkout --theirs app.js
C. git reset --theirs app.js
D. git merge --theirs app.js

Solution

  1. Step 1: Identify the correct command to pick 'theirs'

    The command to choose the 'theirs' version during conflict is git checkout --theirs <file>.
  2. Step 2: Verify the file name usage

    Using app.js after the command specifies the file to resolve.
  3. Final Answer:

    git checkout --theirs app.js -> Option B
  4. Quick Check:

    Use 'git checkout --theirs' to pick theirs [OK]
Hint: Use 'git checkout --theirs <file>' to pick theirs version [OK]
Common Mistakes:
  • Using 'git reset' instead of 'git checkout'
  • Confusing '--ours' with '--theirs'
  • Trying 'git merge --theirs' which is invalid
3. After a merge conflict on index.html, you run:
git checkout --ours index.html
What will be the content of index.html after this command?
medium
A. The version from your current branch before the merge
B. The version from the branch you are merging
C. The common ancestor version
D. An empty file

Solution

  1. Step 1: Understand what 'git checkout --ours' does in conflict

    This command replaces the conflicted file with the version from your current branch before the merge.
  2. Step 2: Confirm the file content after the command

    After running it, index.html will have your branch's original content, ignoring the other branch's changes.
  3. Final Answer:

    The version from your current branch before the merge -> Option A
  4. Quick Check:

    'git checkout --ours' = current branch content [OK]
Hint: Checkout --ours picks your branch's file version [OK]
Common Mistakes:
  • Thinking it picks the other branch's version
  • Assuming it resets to common ancestor
  • Expecting it to merge both versions automatically
4. You tried to resolve a conflict by running git checkout --theirs main.js but the file did not update. What is the likely cause?
medium
A. You need to commit before checking out
B. You used the wrong file name
C. You are not in a conflicted merge state
D. The command only works after resolving conflicts manually

Solution

  1. Step 1: Check the merge state requirement

    The git checkout --theirs command only works when Git detects a conflict during a merge.
  2. Step 2: Understand why the file didn't update

    If you are not in a conflicted state, Git has no 'theirs' version to apply, so the file stays unchanged.
  3. Final Answer:

    You are not in a conflicted merge state -> Option C
  4. Quick Check:

    'git checkout --theirs' needs conflict state [OK]
Hint: Use 'git status' to confirm conflict before checkout --theirs [OK]
Common Mistakes:
  • Trying to use --theirs outside a merge conflict
  • Assuming checkout updates file without conflict
  • Not verifying current branch or file name
5. During a complex merge conflict involving multiple files, you want to keep your current branch's version for config.yaml but accept the other branch's version for README.md. Which sequence of commands correctly resolves this?
hard
A. git checkout --ours config.yaml && git checkout --theirs README.md && git add config.yaml README.md
B. git checkout --theirs config.yaml && git checkout --ours README.md && git add config.yaml README.md
C. git reset --ours config.yaml && git reset --theirs README.md && git commit -m 'Resolve conflicts'
D. git merge --ours config.yaml README.md

Solution

  1. Step 1: Use correct commands to pick versions per file

    To keep your branch's version for config.yaml, use git checkout --ours config.yaml. To accept the other branch's version for README.md, use git checkout --theirs README.md.
  2. Step 2: Stage the resolved files

    After choosing versions, add both files to the staging area with git add config.yaml README.md to mark conflicts resolved.
  3. Final Answer:

    git checkout --ours config.yaml && git checkout --theirs README.md && git add config.yaml README.md -> Option A
  4. Quick Check:

    Use checkout --ours/theirs per file, then git add [OK]
Hint: Pick versions per file with checkout, then git add to resolve [OK]
Common Mistakes:
  • Mixing up --ours and --theirs for files
  • Forgetting to git add after checkout
  • Using git reset or git merge incorrectly