Ramkumar Ramachandra wrote: > The range version of $(git merge-base A B) B is B ^$(git merge-base A > B), and not B --not $(git merge-base --all A B) [which is equivalent > to B ^A or A..B]. Let me make this easier for you, and everyone else. In git.git, checkout master and merge 9915605c^2 (rr/shortlog-doc). So, my changeset has graduated from 'pu' to 'master' (I know 'master' is directly ahead of 'pu', and this is not what you do; but this is just an exercise). Now, I execute git log master..pu and search for the author "Ramkumar Ramachandra". I can see that my shortlog-doc commits aren't present; so I infer that my changes have graduated to master. I can also see the merge commit corresponding to rr/shortlog-doc, and infer that master merged in rr/shortlog-doc differently. If I execute git log pu ^$(git merge-base master pu), I see the merge commit rr/shortlog-doc _and_ the shortlog-doc commits. Here, I don't want to know if my change graduated to master or not: I just want to know what changes were introduced by the pu branch since the last fork. Think of it as a time-truncated version of git log pu: it has nothing to do with reachability. The only reason that master even appears in the command is because I need to specify where pu forked off from. I would argue that this is incredibly useful: to see what changes were introduced by "my branch" independent of everything else. What do you think? -- 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