You're on your way to the next level! Join the Kudos program to earn points and save your progress.
Level 1: Seed
25 / 150 points
1 badge earned
Challenges come and go, but your rewards stay with you. Do more to earn more!
What goes around comes around! Share the love by gifting kudos to your peers.
Keep earning points to reach the top of the leaderboard. It resets every quarter so you always have a chance!
Join now to unlock these features and more
I'm confused by the working when you resolve conflicts. What does "theirs" refer to and what does "mine" refer to?
Which version is kept by the two options?
I believe that you're talking about Git, right?
When you have conflict between your file and the file that you're merging, you have two choices:
"Mine" - Your file will be used to solve the conflicts
"Theirs" - The Target file will be used to solve the conflicts.
It depends on what you need to use to solve the file conflict.
Actually the opposite:
Mine = The file that I'm merging into the current
Theirs = The current
Let's say we have two branches branch1 and branch2. Assume we are in branch2 and we merge the last commit of branch1 into the branch2 and we get conflicts. Now:
Hi I'd just like to point out that Henrique's answer is incorrect for SourceTree 2.5.2 (current as of June 2017) per my understanding and experience (perhaps I misunderstood). This is a git repo.
Here is the state before merge: branch v4 has all the new stuff, branch develop is behind. I'm merging v4 into develop.
Current branch: develop
Merge v4 -> Develop
Mine == Use the file as it is in Develop, ie. the same branch I am in
Theirs == Use the file as it is in v4, ie. the branch I am not in
This makes sense to me (it's what I expected), but appears to be the opposite of Henrique's answer.
Resolve using "theirs" should result in my local changes discarded for that file, and the remote version taking over. Resolve using "mine" should mean I choose to keep my local version instead of the remote version. Instead, the opposite happens. The functions are switched.
Can I +1 this? Not only does the UI use "mine" and "theirs", but when merging using a diff tool it creates temp files names myfile.LOCAL.txt and myfile.REMOTE.txt .. so mine is local, and theirs is remote?
Why not just have "resolve using branchname1" and have the file called myfile.branchname1.txt in the resolve tool, and "resolve using branchname2" and have the file called myfile.branchname2.txt in the resolve tool?
This is still not resolved ahaha.
Ok, here is a work around source tree.
- Open the panel that shows conflicting files in source tree.
- Open visual studio code
- Drag the conflicting file from source tree into VSCode.
- Resolve conflict
- Back in source tree and stage the file.
6 years is not enough to solve obvious UX disaster.
No the dialog it bad option to solve the problem. It is distractive and slowing down.
1. Git uses different terminology, you have to use the same , there is ours and theirs.
2. You know what you are merging. Show in context menu what is mine and what is theirs. Show branch name(if you can't guess it then commit).
I'm using Sourcetree for managing commits, branches, merging, etc. I was merging branch A into my currently selected branch B/working copy and I wanted to keep the changes from branch A. What I experienced was Mine = Current Branch (B) and Theirs = Branch being merged in (A). So my solution was to Resolve using Theirs.
I was able to verify this when I got a prompt to confirm the commit I wanted to use. In this prompt it provided a string of numbers and letters. When I selected Mine i got a value that matched the latest commit for B and when I selected Theirs I got a value that matched the latest commit from A.