threads / discuss / 8153

git log and merge commits

Subject: git log and merge commits

## tl;dr

4 messages between May 14, 2007 and May 14, 2007.

replies: 3people: 3as markdown or json

Geert Uytterhoeven· May 14, 2007, 16:13 UTC · lore
	Hi,

I noticed `git log -p' doesn't show the changes introduced by merge commits. This is true for plain `git log -p' and for `git log -p <filename>'.

Using `git show <commit-id>' does show the changes.

As I noticed the problem originally in a non-public repository, it was a bit difficult to report. But I've just found an example in linux.git, too:

`git show 5cd47155155a32e5b944ac9fc3f3dc578e429aa0' shows the merge commit. But `git log -p include/asm-arm/arch-ixp4xx/io.h' doesn't show it.

It happens in git 1.4.4.4 (what I'm using regularly), but also in 1.5.1.4.
Gr{oetje,eeting}s,
						Geert

-- Geert Uytterhoeven -- Sony Network and Software Technology Center Europe (NSCE) Geert.Uytterhoeven@sonycom.com ------- The Corporate Village, Da Vincilaan 7-D1 Voice +32-2-7008453 Fax +32-2-7008622 ---------------- B-1935 Zaventem, Belgium

Jakub Narebski· May 14, 2007, 16:56 UTC · re: Geert Uytterhoeven · lore

Re: git log and merge commits

[Cc: Geert Uytterhoeven <Geert.Uytterhoeven@sonycom.com>,
     git@vger.kernel.org]
Geert Uytterhoeven wrote:
> I noticed `git log -p' doesn't show the changes introduced by merge commits.
> This is true for plain `git log -p' and for `git log -p <filename>'.
Have you tried `git log -p --cc'?
-- 
Jakub Narebski
Warsaw, Poland
ShadeHawk on #git
Linus Torvalds· May 14, 2007, 17:51 UTC · re: Geert Uytterhoeven · lore

Re: git log and merge commits

On Mon, 14 May 2007, Geert Uytterhoeven wrote:
> 
> I noticed `git log -p' doesn't show the changes introduced by merge commits.
> This is true for plain `git log -p' and for `git log -p <filename>'.

The default diff output format is silent about merges, because merges can be shown multiple different ways, and you have to tell git which format you want.

"git show" defaults to using "--cc", which is usually what you want. But it can be a fairly expensive operation, so "git log" defaults to not showing the merges at all.

The alternative format is just plain "-c", which shows a combined merge (ie it effectively shows the diff from *both* parents for any file with content merging). It gets really really large, really easily, which is why "--cc" is often more interesting (since it shows what looks like just the potential conflicts!)

		Linus
Geert Uytterhoeven· May 14, 2007, 18:01 UTC · re: Linus Torvalds · lore

Re: git log and merge commits

On Mon, 14 May 2007, Linus Torvalds wrote:
Show 7 quoted lines
> On Mon, 14 May 2007, Geert Uytterhoeven wrote:
> > I noticed `git log -p' doesn't show the changes introduced by merge commits.
> > This is true for plain `git log -p' and for `git log -p <filename>'.
> 
> The default diff output format is silent about merges, because merges can 
> be shown multiple different ways, and you have to tell git which format 
> you want.
IC.
Show 9 quoted lines
> "git show" defaults to using "--cc", which is usually what you want. But 
> it can be a fairly expensive operation, so "git log" defaults to not 
> showing the merges at all.
> 
> The alternative format is just plain "-c", which shows a combined merge 
> (ie it effectively shows the diff from *both* parents for any file with 
> content merging). It gets really really large, really easily, which is why 
> "--cc" is often more interesting (since it shows what looks like just the 
> potential conflicts!)
Yes, --cc (as pointed out by Jakub, too), and -c both show the merge change.

In my case a file was modified by a merge, but semantically that change didn't belong to the merge. I saw during `git pull' that the file got modified, but I couldn't find the actual change with `git log -p'...

Thanks!
Gr{oetje,eeting}s,
						Geert

-- Geert Uytterhoeven -- Sony Network and Software Technology Center Europe (NSCE) Geert.Uytterhoeven@sonycom.com ------- The Corporate Village, Da Vincilaan 7-D1 Voice +32-2-7008453 Fax +32-2-7008622 ---------------- B-1935 Zaventem, Belgium

← back to recent threads