Wednesday, February 9, 2011

git merge -s ours, what about "their"

When merging topic branch "B" in "A" using git merge, I get some conflicts. I know all the conflicts can be solved using the version in "B".

I am aware of git merge -s ours. But what I want is something like git merge -s their.

Why it does not exist? How can I achieve the same result after the conflicting merge with hot git commands? (git checkout every unmerged file from B)

thanks

UPDATE: however, this solution just discard anything from branch A (the merge commit point to B version of the tree). This is not what I am looking for :(

  • I solved my problem using

    git checkout -m old
    git checkout -b new B
    git merge -s ours old
    
    elmarco : a branch "B" from "old" branch
    Yar : @elmarco, okay, didn't know about this new thing.
    From elmarco
  • Older versions of git allowed you to use the "theirs" merge strategy:

    
    git pull --strategy=theirs remote_branch
    

    But this has since been removed, as explained in this message by Junio Hamano (the Git maintainer). As noted in the link, instead you would do this:

    
    git fetch origin
    get reset --hard origin
    

    Beware, though, that this is different than an actual merge. You're solution is probably the option you're really looking for.

    elmarco : thanks, I am not totally satisfy by my answer though, it was missing the checkout of other files in old. it was odd, I add to checkout them... to commit --amend them then.
    From Pat Notz
  • One other thing to look at is adding the strategy with -X. For example:

    git checkout branchA
    git merge -Xtheirs branchB

    This works for me in version 1.7.1 of Git. The only conflicts I see are if I have deleted a file in branchB. The merge will complain about that as a conflict. Basically, what happens is that when you checkout branchA the file you deleted in branchB will still be there. To fix the conflict, just do:

    git rm {DELETED-FILE-NAME}

    and the commit from there.

    (If you happen to remember to delete the files first, the merge with -Xtheirs should not complain about conflicts)

0 comments:

Post a Comment