One section talked about <name> when only <refname> was defined. And the description for r1^! was incorrect, talking about "parents" (which I understand as meaning direct parent commits), when really all ancestors were meant. Finally I added a few more examples (in particular one for "B..C") that helped me understand the whole thing. Signed-off-by: Max Horn <max@xxxxxxxxx> --- Documentation/revisions.txt | 20 ++++++++++++-------- 1 files changed, 12 insertions(+), 8 deletions(-) diff --git a/Documentation/revisions.txt b/Documentation/revisions.txt index 1725661..b452265 100644 --- a/Documentation/revisions.txt +++ b/Documentation/revisions.txt @@ -24,22 +24,22 @@ blobs contained in a commit. object referenced by 'refs/heads/master'. If you happen to have both 'heads/master' and 'tags/master', you can explicitly say 'heads/master' to tell git which one you mean. - When ambiguous, a '<name>' is disambiguated by taking the + When ambiguous, a '<refname>' is disambiguated by taking the first match in the following rules: - . If '$GIT_DIR/<name>' exists, that is what you mean (this is usually + . If '$GIT_DIR/<refname>' exists, that is what you mean (this is usually useful only for 'HEAD', 'FETCH_HEAD', 'ORIG_HEAD', 'MERGE_HEAD' and 'CHERRY_PICK_HEAD'); - . otherwise, 'refs/<name>' if it exists; + . otherwise, 'refs/<refname>' if it exists; . otherwise, 'refs/tags/<refname>' if it exists; - . otherwise, 'refs/heads/<name>' if it exists; + . otherwise, 'refs/heads/<refname>' if it exists; - . otherwise, 'refs/remotes/<name>' if it exists; + . otherwise, 'refs/remotes/<refname>' if it exists; - . otherwise, 'refs/remotes/<name>/HEAD' if it exists. + . otherwise, 'refs/remotes/<refname>/HEAD' if it exists. + 'HEAD' names the commit on which you based the changes in the working tree. 'FETCH_HEAD' records the branch which you fetched from a remote repository @@ -215,8 +215,9 @@ It is the set of commits that are reachable from either one of Two other shorthands for naming a set that is formed by a commit and its parent commits exist. The 'r1{caret}@' notation means all -parents of 'r1'. 'r1{caret}!' includes commit 'r1' but excludes -all of its parents. +commits reachable from 'r1' except for 'r1' itself, i.e. all ancestors +of 'r1' are included. In contrast to this, 'r1{caret}!' includes commit +'r1' but excludes all of its ancestors. Here are a handful of examples: @@ -224,7 +225,10 @@ Here are a handful of examples: D F G H I J D F ^G D H D ^D B E I J F B + B..C C B...C G H D E B C ^D B C E I J F B C + C I J F C C^@ I J F + B^! C B C F^! D G H D F -- 1.7.7.5 (Apple Git-26) -- 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