Re: git-log on a file, and merges

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 8/2/2019 5:38 AM, Piotr Krukowiecki wrote:
> Hi,
> 
> I have merged a branch into master.
> 
> When on master I do "git log -- some/file", it does not show commits
> from merged branch (which I know they changed the file).
> I have to add "--full-history" to see the commits.
> When I run "git log" (without "-- some/file") I can see the commits
> without using "--full-history".
> 
> This seems not logical, and contrary to user expectations. Harmful even ;)
> 
> Am I missing something?

Hi Piotr,

You are falling victim to an issue related to file history simplification [1]
and a (probably) bad merge. You can read more about how this can happen at [2].

When git log reaches a merge commit and one of the parents matches that path
exactly, only that parent is walked. The other is ignored. In some sense, the
other commit did not contribute changes to that file (because we only took
changes from the other parent). This makes the history look good and enables
some performance boosts.

Basically, someone must have gotten a merge conflict and used "-S ours" to
wipe away the changes from the other branch on that file. You can find that
merge by running

	git log --full-history --simplify-merges -- some/file

You will see the merge commit that un-did the change somewhere above the
commit you are expecting to see in the history.

Thanks,
-Stolee


[1] https://git-scm.com/docs/git-log#_history_simplification
[2] https://docs.microsoft.com/en-us/azure/devops/repos/git/git-log-history-simplification?view=azure-devops




[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux