34

I did git fetch and then git pull --rebase. It is trying to merge changes from the remote branch to my local branch. And there are some merge conflicts. So I did a git reset --hard.

My question is it is possible for me to ask git pull to take the remote change whenever there is a conflict?

Whymarrh
  • 13,139
  • 14
  • 57
  • 108
michael
  • 106,540
  • 116
  • 246
  • 346
  • Once can also fetch and then rebase manually (e.g. `git fetch` and `git rebase -X theirs origin/foo`) – Whymarrh May 16 '17 at 14:38

1 Answers1

50

I think what you want is this:

git pull --rebase -s recursive -X ours

But it doesn't work (I'm using 1.7.0.4), even though the manpage says it should. I'm guessing this is due to the issue mentioned here.

Instead, you could use:

git pull -s recursive -X theirs

It works as expected, but you'll get a merge instead of a rebase.

Also - note 'ours', rather than 'theirs' when using --rebase. From the git-rebase manpage:

[CLIP]... a rebase merge works by replaying each commit from the working branch on top of the upstream branch. Because of this, when a merge conflict happens, the side reported as ours is the so-far rebased series, starting with upstream, and theirs is the working branch. In other words, the sides are swapped. ...[CLIP]

Community
  • 1
  • 1
Jeff
  • 1,722
  • 13
  • 7
  • 1
    If I `git pull --rebase upstream devel`, wouldn't a `--strategy recursive` be redundant? The alternative would be the octopus merge strategy if I understand the manpages right, but it's only required if more than 2 branches are combined. In my case, there's only two (`upstream/devel` and `/devel`, `` being my working copy of `fork/devel` synced on Github). Thus, I would use `git pull --rebase --strategy-option theirs` if nothing speaks against it? – CodeManX Aug 22 '15 at 13:12
  • FWIW `git pull --rebase -s recursive -X ours` worked for me, thanks! – silvenon Nov 06 '20 at 09:48