2014-11-04 17:21 GMT+01:00 Phil Hord <phil.hord@xxxxxxxxx>: > On Fri, Oct 31, 2014 at 4:40 AM, Alexandre Garnier <zigarn+git@xxxxxxxxx> wrote: >> When merging 2 branches with the same modifications on the both sides, >> depending the merge side, one branch disappear from the file history. >> >> To be more clear, there is a script in attachment to reproduce, but >> here is the result : >> $ git log --graph --oneline --all --decorate --name-status >> * 63c807f (HEAD, master) Merge branch 'branch' into 'master' >> |\ >> | * 5dc8785 (branch) Change line 15 on branch >> | | M file >> | * d9cd3ce Change line 25 on branch >> | | M file >> * | 7220d52 Change line 15 on master >> |/ >> | M file >> * 7566672 Initial commit >> A file >> >> $ git log --graph --oneline --all --decorate --name-status -- file >> * 5dc8785 (branch) Change line 15 on branch >> | M file >> * d9cd3ce Change line 25 on branch >> | M file >> * 7566672 Initial commit >> A file >> >> => The commit 7220d52 modified the file but is not shown in file >> history anymore. >> The expected result would be: >> * 5dc8785 (branch) Change line 15 on branch >> | M file >> * d9cd3ce Change line 25 on branch >> | M file >> | * 7220d52 Change line 15 on master >> |/ >> | M file >> * 7566672 Initial commit >> A file >> >> The order between the 2 commits on the branch is not important. >> If you do a 'cherry-pick 7220d52' or a 'merge --squash master' instead >> of applying the same modification for commit 5dc8785, you get the same >> result (cherry-picking was my initial use-case). >> If you do not create the commit d9cd3ce, then the file history show all commits. >> If you merge 'master' into 'branch', then the file history show all commits. > > This last line was confusing to me. But I think you've misinterpreted > the results a bit. There is no difference between "merge master into > branch" and "merge branch into master" in this case. The real reason > the "extra" commit is shown in the former case is that you used > '--all' (include all refs as commandline arguments) and the commit > which was being omitted was directly referenced by a ref, 'master'. > > When I remove the "--all" from your test script, I get consistent logs > for the two merges. > > Maybe this has misled your other tests as well. Read the "History > Simplification" section of "git help log". Thanks for pointing me out the 'history simplification' [1]. Didn't know about this and missed it in the large help of 'git log'. I will now use the '--full-history' option more often as it has more sense to me (but it's not available in EGit: bug #341028) [2]) [1] http://git-scm.com/docs/git-log#_history_simplification [2] https://bugs.eclipse.org/bugs/show_bug.cgi?id=341028 -- Alex -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html