Bird
Raised Fist0
Gitdevops~20 mins

Ours vs theirs in conflicts in Git - Practice Questions

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
🎖️
Merge Conflict Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
🧠 Conceptual
intermediate
1:30remaining
Understanding 'ours' and 'theirs' in Git merge conflicts

When resolving a merge conflict in Git, what does the term 'ours' refer to?

AThe changes from the branch you are currently on (your working branch).
BThe changes from the branch you are merging into your current branch.
CThe changes from the remote repository's default branch.
DThe changes from the last commit before the merge started.
Attempts:
2 left
💡 Hint

Think about which branch you have checked out when you start the merge.

💻 Command Output
intermediate
1:30remaining
Output of choosing 'ours' during conflict resolution

You have a merge conflict in a file named app.js. You run the command git checkout --ours app.js followed by git add app.js. What will be the content of app.js after these commands?

AThe content of <code>app.js</code> from the branch you are merging in.
BThe content of <code>app.js</code> from your current branch before the merge.
CAn empty file with conflict markers still present.
DThe content of <code>app.js</code> from the last commit on the remote repository.
Attempts:
2 left
💡 Hint

'--ours' means to keep your current branch's version of the file.

🔀 Workflow
advanced
2:00remaining
Resolving conflicts preferring 'theirs' changes

You are merging a feature branch into your main branch and want to resolve all conflicts by accepting the changes from the feature branch (theirs). Which sequence of commands correctly achieves this for all conflicted files?

Agit merge feature; git checkout --theirs .; git add .; git commit -m 'Resolved conflicts using theirs'
Bgit merge feature; git checkout --ours .; git add .; git commit -m 'Resolved conflicts using theirs'
Cgit merge feature; git revert --theirs; git add .; git commit -m 'Resolved conflicts using theirs'
Dgit merge feature; git reset --hard; git commit -m 'Resolved conflicts using theirs'
Attempts:
2 left
💡 Hint

Remember that --theirs means the branch you are merging in.

Troubleshoot
advanced
1:30remaining
Error when using 'git checkout --theirs' on a non-conflicted file

You run git checkout --theirs README.md but get the error: error: pathspec 'README.md' did not match any files. What is the most likely cause?

AYou have uncommitted changes in README.md preventing checkout.
BYou are not inside a Git repository.
CThe file README.md is ignored by .gitignore.
DThe file README.md is not in conflict, so 'theirs' version does not exist.
Attempts:
2 left
💡 Hint

'--theirs' only works on files with merge conflicts.

Best Practice
expert
2:30remaining
Choosing between 'ours' and 'theirs' in a complex conflict scenario

During a complex merge conflict involving multiple files, you want to keep your current branch's changes for configuration files but accept incoming changes for source code files. Which approach best achieves this?

AAbort the merge and manually copy files from each branch outside Git, then commit.
BUse <code>git checkout --theirs</code> on all files, then manually revert config files after commit.
CUse <code>git checkout --ours</code> on config files and <code>git checkout --theirs</code> on source code files, then stage and commit.
DUse <code>git merge --strategy=ours</code> to keep all current branch changes.
Attempts:
2 left
💡 Hint

Selective checkout of 'ours' or 'theirs' per file allows fine control.

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