threads / discuss / 42019

Question about git log --merge option

Subject: Question about git log --merge option

## tl;dr

3 messages between Apr 13, 2016 and Apr 14, 2016.

replies: 2people: 2as markdown or json

Andrey Hsiao· Apr 13, 2016, 16:53 UTC · lore
Dear list:
Just encountered the --merge option for git log.
In the man page, it has the following explanation:
- After a failed merge, show refs that touch files having a conflict
and don't exist on all heads to merge.
I tried this option and get below results:
1. For a failed merge (with conflicts), if the conflicted file does
not exist on either side of the merge, the --merge option will return
the log from the other side.
2. If the conflicted file exists on both sides of the merge, the
--merge option will return the latest change on either side. (i.e: git
log -1 -- conflict_file / git log -1 --merge -- conflict_file may
return different results, whichever changed the latest)

I'm not sure whether above behavior is the unexpected result (cannot find detailed explanation for --merge option online).

Thanks
Junio C Hamano· Apr 13, 2016, 20:37 UTC · re: Andrey Hsiao · lore

Re: Question about git log --merge option

Andrey Hsiao <andreyhsiao@gmail.com> writes:
Show 7 quoted lines
> Dear list:
>
> Just encountered the --merge option for git log.
>
> In the man page, it has the following explanation:
> - After a failed merge, show refs that touch files having a conflict
> and don't exist on all heads to merge.
	git log --merge [options] -- $paths
is roughly the same as
	git log [options] HEAD...MERGE_HEAD -- $paths'

where $paths' is $paths limited to those with conflicts. You can further think of that as a rough equivalent of

	git log [options] ^X HEAD MERGE_HEAD -- $paths'
where X is the merge base between the tips of these two branches:
    X---o---o---o---H
     \
      o---o---o---M

And the commits among these ('o's, H and M in the picture), the ones that change any of the $paths' are shown. If you further limit the output (e.g. with -n<n>, or --since=<time>), you may not see all of them, of course.

Andrey Hsiao· Apr 14, 2016, 02:31 UTC · re: Junio C Hamano · lore

Re: Question about git log --merge option

Thanks Junio, I understand the option's meaning now :)
On Thu, Apr 14, 2016 at 4:37 AM, Junio C Hamano <gitster@pobox.com> wrote:
Show 31 quoted lines
> Andrey Hsiao <andreyhsiao@gmail.com> writes:
>
>> Dear list:
>>
>> Just encountered the --merge option for git log.
>>
>> In the man page, it has the following explanation:
>> - After a failed merge, show refs that touch files having a conflict
>> and don't exist on all heads to merge.
>
>         git log --merge [options] -- $paths
>
> is roughly the same as
>
>         git log [options] HEAD...MERGE_HEAD -- $paths'
>
> where $paths' is $paths limited to those with conflicts.  You can
> further think of that as a rough equivalent of
>
>         git log [options] ^X HEAD MERGE_HEAD -- $paths'
>
> where X is the merge base between the tips of these two branches:
>
>     X---o---o---o---H
>      \
>       o---o---o---M
>
> And the commits among these ('o's, H and M in the picture), the ones
> that change any of the $paths' are shown.  If you further limit the
> output (e.g. with -n<n>, or --since=<time>), you may not see all of
> them, of course.

← back to recent threads