merge conflict diff

3 messages, 2 authors, 2016-06-15 · open the first message on its own page

merge conflict diff

From: Jeremy Ramer <hidden>
Date: 2016-06-15 22:44:27

Hi,
I am trying to figure out how to quickly diff two source files that
led to a merge conflict.  When a conflict occurs the command
# git diff
performs a diff -cc, but I would like to compare the files before any
merging takes place so I can decide if I should just take all the
changes from one of the sources.
 i.e. take the changes from the merging branch:
# git checkout-index -f -u --stage=3 foo
# git add foo

So far I am thinking of
# git checkout-index --stage=2 --temp foo
# git checkout-index --stage=3 --temp foo
# git diff .merge_x1 .merge_x2

Are there any built-in ways to accomplish this? I'd like to be able to
build a script that can quickly start the diff based on the file name
I provide.

Thanks!
Jeremy

Re: merge conflict diff

From: Jeff King <hidden>
Date: 2016-06-15 22:44:27

On Thu, Apr 03, 2008 at 08:13:04AM -0600, Jeremy Ramer wrote:
I am trying to figure out how to quickly diff two source files that
led to a merge conflict.  When a conflict occurs the command
[...]
So far I am thinking of
# git checkout-index --stage=2 --temp foo
# git checkout-index --stage=3 --temp foo
# git diff .merge_x1 .merge_x2
The special ref syntax :<n>:file refers to the blob in stage <n> of the
index. So you can see them with:

  git show :2:foo
  git show :3:foo

Or diff them with:

  git diff :2:foo :3:foo

You may also want to look at the git-mergetool script, which uses both
versions (along with the ancestor) as the arguments to many common merge
resolution programs.

-Peff

Re: merge conflict diff

From: Jeremy Ramer <hidden>
Date: 2016-06-15 22:44:27

On Thu, Apr 3, 2008 at 8:26 AM, Jeff King [off-list ref] wrote:
On Thu, Apr 03, 2008 at 08:13:04AM -0600, Jeremy Ramer wrote:

 > I am trying to figure out how to quickly diff two source files that
 > led to a merge conflict.  When a conflict occurs the command
 > [...]
quoted
So far I am thinking of
 > # git checkout-index --stage=2 --temp foo
 > # git checkout-index --stage=3 --temp foo
 > # git diff .merge_x1 .merge_x2

 The special ref syntax :<n>:file refers to the blob in stage <n> of the
 index. So you can see them with:

  git show :2:foo
  git show :3:foo

 Or diff them with:

  git diff :2:foo :3:foo
Perfect! I was not aware of that syntax. That solves the question I asked.
 You may also want to look at the git-mergetool script, which uses both
 versions (along with the ancestor) as the arguments to many common merge
 resolution programs.
This suggestion solves the actual problem in a much better way than I
was thinking.  Thanks for the help!
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help