[ --sparse ]\r
[ --no-merges ]\r
[ --remove-empty ]\r
+ [ --not ]\r
[ --all ]\r
[ --topo-order ]\r
[ --parents ]\r
not in <em>baz</em>".</p>\r
<p>A special notation <commit1>..<commit2> can be used as a\r
short-hand for ^<commit1> <commit2>.</p>\r
+<p>Another special notation is <commit1>…<commit2> which is useful for\r
+merges. The resulting set of commits is the symmetric difference\r
+between the two operands. The following two commands are equivalent:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git-rev-list A B --not $(git-merge-base --all A B)\r
+$ git-rev-list A...B</tt></pre>\r
+</div></div>\r
</div>\r
<h2>OPTIONS</h2>\r
<div class="sectionbody">\r
</p>\r
</dd>\r
<dt>\r
+--not\r
+</dt>\r
+<dd>\r
+<p>\r
+ Reverses the meaning of the <em>^</em> prefix (or lack\r
+ thereof) for all following revision specifiers, up to\r
+ the next <tt>--not</tt>.\r
+</p>\r
+</dd>\r
+<dt>\r
--all\r
</dt>\r
<dd>\r
</div>\r
<div id="footer">\r
<div id="footer-text">\r
-Last updated 09-May-2006 00:32:26 UTC\r
+Last updated 07-Jul-2006 06:05:13 UTC\r
</div>\r
</div>\r
</body>\r
[ \--sparse ]
[ \--no-merges ]
[ \--remove-empty ]
+ [ \--not ]
[ \--all ]
[ \--topo-order ]
[ \--parents ]
A special notation <commit1>..<commit2> can be used as a
short-hand for {caret}<commit1> <commit2>.
+Another special notation is <commit1>...<commit2> which is useful for
+merges. The resulting set of commits is the symmetric difference
+between the two operands. The following two commands are equivalent:
+
+------------
+$ git-rev-list A B --not $(git-merge-base --all A B)
+$ git-rev-list A...B
+------------
OPTIONS
-------
--remove-empty::
Stop when a given path disappears from the tree.
+--not::
+ Reverses the meaning of the '{caret}' prefix (or lack
+ thereof) for all following revision specifiers, up to
+ the next `--not`.
+
--all::
Pretend as if all the refs in `$GIT_DIR/refs/` are
listed on the command line as <commit>.
</p>\r
</li>\r
</ul>\r
-<p><em>git-rev-parse</em> also accepts a prefix <em>^</em> to revision parameter,\r
-which is passed to <em>git-rev-list</em>. Two revision parameters\r
-concatenated with <em>..</em> is a short-hand for writing a range\r
-between them. I.e. <em>r1..r2</em> is equivalent to saying <em>^r1 r2</em></p>\r
<p>Here is an illustration, by Jon Loeliger. Both node B and C are\r
a commit parents of commit node A. Parent commits are ordered\r
left-to-right.</p>\r
<pre><tt>G H I J\r
\ / \ /\r
D E F\r
- \ | /\r
- \ | /\r
- \|/\r
+ \ | / \ | / |\r
+ \|/ |\r
B C\r
\ /\r
\ /\r
J = F^2 = B^3^2 = A^^3^2</tt></pre>\r
</div></div>\r
</div>\r
+<h2>SPECIFYING RANGES</h2>\r
+<div class="sectionbody">\r
+<p>History traversing commands such as <tt>git-log</tt> operate on a set\r
+of commits, not just a single commit. To these commands,\r
+specifying a single revision with the notation described in the\r
+previous section means the set of commits reachable from that\r
+commit, following the commit ancestry chain.</p>\r
+<p>To exclude commits reachable from a commit, a prefix <tt>^</tt>\r
+notation is used. E.g. "<tt>^r1 r2</tt>" means commits reachable\r
+from <tt>r2</tt> but exclude the ones reachable from <tt>r1</tt>.</p>\r
+<p>This set operation appears so often that there is a shorthand\r
+for it. "<tt>r1..r2</tt>" is equivalent to "<tt>^r1 r2</tt>". It is\r
+the difference of two sets (subtract the set of commits\r
+reachable from <tt>r1</tt> from the set of commits reachable from\r
+<tt>r2</tt>).</p>\r
+<p>A similar notation "<tt>r1...r2</tt>" is called symmetric difference\r
+of <tt>r1</tt> and <tt>r2</tt> and is defined as\r
+"<tt>r1 r2 --not $(git-merge-base --all r1 r2)</tt>".\r
+It it the set of commits that are reachable from either one of\r
+<tt>r1</tt> or <tt>r2</tt> but not from both.</p>\r
+<p>Here are a few examples:</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>D A B D\r
+D F A B C D F\r
+^A G B D\r
+^A F B C F\r
+G...I C D F G I\r
+^B G I C D F G I</tt></pre>\r
+</div></div>\r
+</div>\r
<h2>Author</h2>\r
<div class="sectionbody">\r
<p>Written by Linus Torvalds <torvalds@osdl.org> and\r
</div>\r
<div id="footer">\r
<div id="footer-text">\r
-Last updated 04-Jun-2006 07:24:31 UTC\r
+Last updated 07-Jul-2006 06:05:13 UTC\r
</div>\r
</div>\r
</body>\r
and dereference the tag recursively until a non-tag object is
found.
-'git-rev-parse' also accepts a prefix '{caret}' to revision parameter,
-which is passed to 'git-rev-list'. Two revision parameters
-concatenated with '..' is a short-hand for writing a range
-between them. I.e. 'r1..r2' is equivalent to saying '{caret}r1 r2'
-
Here is an illustration, by Jon Loeliger. Both node B and C are
a commit parents of commit node A. Parent commits are ordered
left-to-right.
G H I J
\ / \ /
D E F
- \ | /
- \ | /
- \|/
+ \ | / \
+ \ | / |
+ \|/ |
B C
\ /
\ /
J = F^2 = B^3^2 = A^^3^2
+SPECIFYING RANGES
+-----------------
+
+History traversing commands such as `git-log` operate on a set
+of commits, not just a single commit. To these commands,
+specifying a single revision with the notation described in the
+previous section means the set of commits reachable from that
+commit, following the commit ancestry chain.
+
+To exclude commits reachable from a commit, a prefix `{caret}`
+notation is used. E.g. "`{caret}r1 r2`" means commits reachable
+from `r2` but exclude the ones reachable from `r1`.
+
+This set operation appears so often that there is a shorthand
+for it. "`r1..r2`" is equivalent to "`{caret}r1 r2`". It is
+the difference of two sets (subtract the set of commits
+reachable from `r1` from the set of commits reachable from
+`r2`).
+
+A similar notation "`r1\...r2`" is called symmetric difference
+of `r1` and `r2` and is defined as
+"`r1 r2 --not $(git-merge-base --all r1 r2)`".
+It it the set of commits that are reachable from either one of
+`r1` or `r2` but not from both.
+
+Here are a few examples:
+
+ D A B D
+ D F A B C D F
+ ^A G B D
+ ^A F B C F
+ G...I C D F G I
+ ^B G I C D F G I
+
Author
------
Written by Linus Torvalds <torvalds@osdl.org> and
</p>\r
</dd>\r
<dt>\r
+--sparse\r
+</dt>\r
+<dd>\r
+<p>\r
+ By default, the output omits merges that are reachable\r
+ from only one tip being shown. This option makes them\r
+ visible.\r
+</p>\r
+</dd>\r
+<dt>\r
--more=<n>\r
</dt>\r
<dd>\r
</div>\r
<div id="footer">\r
<div id="footer-text">\r
-Last updated 18-Mar-2006 07:45:36 UTC\r
+Last updated 07-Jul-2006 06:05:14 UTC\r
</div>\r
</div>\r
</body>\r
appear in topological order (i.e., descendant commits
are shown before their parents).
+--sparse::
+ By default, the output omits merges that are reachable
+ from only one tip being shown. This option makes them
+ visible.
+
--more=<n>::
Usually the command stops output upon showing the commit
that is the common ancestor of all the branches. This