On Mon, Dec 23, 2019 at 10:02:31AM -0800, Junio C Hamano wrote: > Please unlearn dot-dot and three-dots when using "git diff", which > is not about ranges but about comparing two endpoints. If we were > reinventing Git today from scratch, we would make "git diff A..B" an > error. You can consider it a bug that the command accepts a range > notation, but this will not change any time soon without a large > fight to find and fix uses of the syntax in scripts by longtime Git > users have written over the years. > > Allowing dot-dot on the command line of "git diff", instead of > diagnosing them as errors and dying, was a stupid mistake we (well, > mostly Linus, but I am willing to take the blame too) made due to > laziness when we reused the machinery, which we invented to parse > the command line of "log" family of commands to specify ranges, to > parse the command line of "diff", which accidentally ended up > allowing the syntax for ranges where it shouldn't be allowed. > > And worse yet, since there was only dot-dot and three-dots came much > later, "git diff A..B" ended up comparing the endpoints A and B, > because there didn't even A...B notation exist. > > This is not limited to you but any user of modern Git is better off > to pretend "git diff A..B" does not exist; please unlearn dot-dot > and three-dots when using "git diff" and you'd be happier. I agreen that you should not use `A..B`, but what is wrong with `A...B`? The alternative is a lot more verbose. git diff $(git merge-base A B) B Kevin