Kevin Daudt <kdaudt@xxxxxxxxxxxxxxx> writes: >> 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 Because it would interfere with even grander consistency that we could achieve in the future, if we get rid of it. Within the context of "git diff" (but not "git" in general), "git diff A...B" that expands to "git diff $(git merge-base A B) B" may appear OK, but this thread started by comparing "git log" and "git diff", so it is no longer worth limiting our vision to a single "git diff" command if we want to continue this thread. Some commands, like "git checkout A...B", know that A...B can stand for "git merge-base A B" in a context that does not call for a range but calls for a single revision. We probably would want to teach it the general revision parser machinery so that this can consistently be used. In such a world, "git diff A...B" ought to mean, because "diff" is about discrete endpoints and not about ranges, "git diff $(git merge-base A B)", i.e. it should behave just like "git diff C" that compares the given single commit and the contents in the working tree through the index. "git diff A...B" we currently have by mistake should be spelled in "git diff A...B B" (or alternatively, "git diff B...A B"). It would take a long time and careful transition planninng to reach there, and training people not to use dot-dot notation is merely a very small first step, though.