Bird
Raised Fist0
Gitdevops~5 mins

Ours vs theirs in conflicts in Git - CLI Comparison

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
Introduction
When two people change the same part of a file in Git, a conflict happens. You must choose which change to keep: yours or the other person's. This helps keep your project working smoothly.
When you pull changes from a shared repository and Git cannot merge automatically.
When you merge a feature branch into the main branch and both changed the same lines.
When you rebase your branch onto another branch and conflicts appear.
When you want to decide quickly which version of a file to keep during a conflict.
When you want to avoid manually editing conflict markers in files.
Commands
This tries to merge the feature-branch into your current branch. If both changed the same lines, Git will stop and show a conflict.
Terminal
git merge feature-branch
Expected OutputExpected
Auto-merging example.txt CONFLICT (content): Merge conflict in example.txt Automatic merge failed; fix conflicts and then commit the result.
This command keeps your current branch's version of example.txt when resolving the conflict.
Terminal
git checkout --ours example.txt
Expected OutputExpected
No output (command runs silently)
This marks the conflict in example.txt as resolved by adding the chosen version to the staging area.
Terminal
git add example.txt
Expected OutputExpected
No output (command runs silently)
This commits the merge with the conflict resolved by keeping your version of the file.
Terminal
git commit -m "Resolved conflict using our version"
Expected OutputExpected
[main 1a2b3c4] Resolved conflict using our version
This command keeps the other branch's version of example.txt when resolving the conflict.
Terminal
git checkout --theirs example.txt
Expected OutputExpected
No output (command runs silently)
Key Concept

If you remember nothing else from this pattern, remember: 'ours' means keep your current branch's changes, 'theirs' means keep the other branch's changes during a conflict.

Common Mistakes
Running 'git checkout --ours' or '--theirs' without adding the file afterwards.
Git still sees the conflict as unresolved until you add the file, so the merge cannot complete.
After choosing 'ours' or 'theirs', always run 'git add <file>' to mark the conflict resolved.
Confusing 'ours' and 'theirs' as meaning your local changes vs remote changes.
'Ours' and 'theirs' refer to branches involved in the merge, not local vs remote repositories.
Understand 'ours' is your current branch, 'theirs' is the branch being merged in.
Trying to use 'git checkout --ours' on files without conflicts.
This command only works on files with merge conflicts; otherwise, it does nothing or errors.
Use this command only when Git reports a conflict in the file.
Summary
Run 'git merge' to combine branches and detect conflicts.
Use 'git checkout --ours <file>' or 'git checkout --theirs <file>' to pick which version to keep.
Add the resolved file with 'git add <file>' and then commit the merge.

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