lines.
--dirstat[=limit]::
- Output only the sub-directories that are impacted by a diff,
- and to what degree they are impacted. You can override the
- default cut-off in percent (3) by "--dirstat=limit". If you
- want to enable "cumulative" directory statistics, you can use
- the "--cumulative" flag, which adds up percentages recursively
- even when they have been already reported for a sub-directory.
+ Output the distribution of relative amount of changes (number of lines added or
+ removed) for each sub-directory. Directories with changes below
+ a cut-off percent (3% by default) are not shown. The cut-off percent
+ can be set with "--dirstat=limit". Changes in a child directory is not
+ counted for the parent directory, unless "--cumulative" is used.
--summary::
Output a condensed summary of extended header information
</dt>\r
<dd>\r
<p>\r
- Override the author name used in the commit. Use\r
- <tt>A U Thor <author@example.com></tt> format.\r
+ Override the author name used in the commit. You can use the\r
+ standard <tt>A U Thor <author@example.com></tt> format. Otherwise,\r
+ an existing commit that matches the given string and its author\r
+ name is used.\r
</p>\r
</dd>\r
<dt>\r
</div>\r
<div id="footer">\r
<div id="footer-text">\r
-Last updated 2008-07-22 09:19:05 UTC\r
+Last updated 2008-09-03 05:19:53 UTC\r
</div>\r
</div>\r
</body>\r
read the message from the standard input.
--author=<author>::
- Override the author name used in the commit. Use
- `A U Thor <author@example.com>` format.
+ Override the author name used in the commit. You can use the
+ standard `A U Thor <author@example.com>` format. Otherwise,
+ an existing commit that matches the given string and its author
+ name is used.
-m <msg>::
--message=<msg>::
</dt>\r
<dd>\r
<p>\r
- Output only the sub-directories that are impacted by a diff,\r
- and to what degree they are impacted. You can override the\r
- default cut-off in percent (3) by "--dirstat=limit". If you\r
- want to enable "cumulative" directory statistics, you can use\r
- the "--cumulative" flag, which adds up percentages recursively\r
- even when they have been already reported for a sub-directory.\r
+ Output the distribution of relative amount of changes (number of lines added or\r
+ removed) for each sub-directory. Directories with changes below\r
+ a cut-off percent (3% by default) are not shown. The cut-off percent\r
+ can be set with "--dirstat=limit". Changes in a child directory is not\r
+ counted for the parent directory, unless "--cumulative" is used.\r
</p>\r
</dd>\r
<dt>\r
</div>\r
<div id="footer">\r
<div id="footer-text">\r
-Last updated 2008-08-20 09:13:28 UTC\r
+Last updated 2008-09-03 05:19:53 UTC\r
</div>\r
</div>\r
</body>\r
</dt>\r
<dd>\r
<p>\r
- Output only the sub-directories that are impacted by a diff,\r
- and to what degree they are impacted. You can override the\r
- default cut-off in percent (3) by "--dirstat=limit". If you\r
- want to enable "cumulative" directory statistics, you can use\r
- the "--cumulative" flag, which adds up percentages recursively\r
- even when they have been already reported for a sub-directory.\r
+ Output the distribution of relative amount of changes (number of lines added or\r
+ removed) for each sub-directory. Directories with changes below\r
+ a cut-off percent (3% by default) are not shown. The cut-off percent\r
+ can be set with "--dirstat=limit". Changes in a child directory is not\r
+ counted for the parent directory, unless "--cumulative" is used.\r
</p>\r
</dd>\r
<dt>\r
</div>\r
<div id="footer">\r
<div id="footer-text">\r
-Last updated 2008-08-20 09:13:29 UTC\r
+Last updated 2008-09-03 05:19:54 UTC\r
</div>\r
</div>\r
</body>\r
</dt>\r
<dd>\r
<p>\r
- Output only the sub-directories that are impacted by a diff,\r
- and to what degree they are impacted. You can override the\r
- default cut-off in percent (3) by "--dirstat=limit". If you\r
- want to enable "cumulative" directory statistics, you can use\r
- the "--cumulative" flag, which adds up percentages recursively\r
- even when they have been already reported for a sub-directory.\r
+ Output the distribution of relative amount of changes (number of lines added or\r
+ removed) for each sub-directory. Directories with changes below\r
+ a cut-off percent (3% by default) are not shown. The cut-off percent\r
+ can be set with "--dirstat=limit". Changes in a child directory is not\r
+ counted for the parent directory, unless "--cumulative" is used.\r
</p>\r
</dd>\r
<dt>\r
</div>\r
<div id="footer">\r
<div id="footer-text">\r
-Last updated 2008-08-29 08:56:28 UTC\r
+Last updated 2008-09-03 05:19:55 UTC\r
</div>\r
</div>\r
</body>\r
</dt>\r
<dd>\r
<p>\r
- Output only the sub-directories that are impacted by a diff,\r
- and to what degree they are impacted. You can override the\r
- default cut-off in percent (3) by "--dirstat=limit". If you\r
- want to enable "cumulative" directory statistics, you can use\r
- the "--cumulative" flag, which adds up percentages recursively\r
- even when they have been already reported for a sub-directory.\r
+ Output the distribution of relative amount of changes (number of lines added or\r
+ removed) for each sub-directory. Directories with changes below\r
+ a cut-off percent (3% by default) are not shown. The cut-off percent\r
+ can be set with "--dirstat=limit". Changes in a child directory is not\r
+ counted for the parent directory, unless "--cumulative" is used.\r
</p>\r
</dd>\r
<dt>\r
</div>\r
<div id="footer">\r
<div id="footer-text">\r
-Last updated 2008-08-20 09:13:30 UTC\r
+Last updated 2008-09-03 05:19:56 UTC\r
</div>\r
</div>\r
</body>\r
<div class="sectionbody">\r
<div class="para"><p>Iterate over all refs that match <tt><pattern></tt> and show them\r
according to the given <tt><format></tt>, after sorting them according\r
-to the given set of <tt><key></tt>. If <tt><max></tt> is given, stop after\r
+to the given set of <tt><key></tt>. If <tt><count></tt> is given, stop after\r
showing that many refs. The interpolated values in <tt><format></tt>\r
can optionally be quoted as string literals in the specified\r
host language allowing their direct evaluation in that language.</p></div>\r
</div>\r
<div id="footer">\r
<div id="footer-text">\r
-Last updated 2008-08-06 06:19:08 UTC\r
+Last updated 2008-09-03 05:19:57 UTC\r
</div>\r
</div>\r
</body>\r
Iterate over all refs that match `<pattern>` and show them
according to the given `<format>`, after sorting them according
-to the given set of `<key>`. If `<max>` is given, stop after
+to the given set of `<key>`. If `<count>` is given, stop after
showing that many refs. The interpolated values in `<format>`
can optionally be quoted as string literals in the specified
host language allowing their direct evaluation in that language.
</dt>\r
<dd>\r
<p>\r
- Output only the sub-directories that are impacted by a diff,\r
- and to what degree they are impacted. You can override the\r
- default cut-off in percent (3) by "--dirstat=limit". If you\r
- want to enable "cumulative" directory statistics, you can use\r
- the "--cumulative" flag, which adds up percentages recursively\r
- even when they have been already reported for a sub-directory.\r
+ Output the distribution of relative amount of changes (number of lines added or\r
+ removed) for each sub-directory. Directories with changes below\r
+ a cut-off percent (3% by default) are not shown. The cut-off percent\r
+ can be set with "--dirstat=limit". Changes in a child directory is not\r
+ counted for the parent directory, unless "--cumulative" is used.\r
</p>\r
</dd>\r
<dt>\r
</div>\r
<div id="footer">\r
<div id="footer-text">\r
-Last updated 2008-08-20 09:13:32 UTC\r
+Last updated 2008-09-03 05:19:57 UTC\r
</div>\r
</div>\r
</body>\r
</div></div>\r
<div class="para"><p>will try to use konqueror first. But this may fail (for example if\r
DISPLAY is not set) and in that case emacs' woman mode will be tried.</p></div>\r
-<div class="para"><p>If everything fails the <em>man</em> program will be tried anyway.</p></div>\r
+<div class="para"><p>If everything fails, or if no viewer is configured, the viewer specified\r
+in the GIT_MAN_VIEWER environment variable will be tried. If that\r
+fails too, the <em>man</em> program will be tried anyway.</p></div>\r
<h3 id="_man_lt_tool_gt_path">man.<tool>.path</h3><div style="clear:left"></div>\r
<div class="para"><p>You can explicitly provide a full path to your preferred man viewer by\r
setting the configuration variable <em>man.<tool>.path</em>. For example, you\r
</div>\r
<div id="footer">\r
<div id="footer-text">\r
-Last updated 2008-07-06 05:16:50 UTC\r
+Last updated 2008-09-03 05:19:57 UTC\r
</div>\r
</div>\r
</body>\r
will try to use konqueror first. But this may fail (for example if
DISPLAY is not set) and in that case emacs' woman mode will be tried.
-If everything fails the 'man' program will be tried anyway.
+If everything fails, or if no viewer is configured, the viewer specified
+in the GIT_MAN_VIEWER environment variable will be tried. If that
+fails too, the 'man' program will be tried anyway.
man.<tool>.path
~~~~~~~~~~~~~~~
</dt>\r
<dd>\r
<p>\r
- Output only the sub-directories that are impacted by a diff,\r
- and to what degree they are impacted. You can override the\r
- default cut-off in percent (3) by "--dirstat=limit". If you\r
- want to enable "cumulative" directory statistics, you can use\r
- the "--cumulative" flag, which adds up percentages recursively\r
- even when they have been already reported for a sub-directory.\r
+ Output the distribution of relative amount of changes (number of lines added or\r
+ removed) for each sub-directory. Directories with changes below\r
+ a cut-off percent (3% by default) are not shown. The cut-off percent\r
+ can be set with "--dirstat=limit". Changes in a child directory is not\r
+ counted for the parent directory, unless "--cumulative" is used.\r
</p>\r
</dd>\r
<dt>\r
sides of the merge are never walked.</p></div>\r
</dd>\r
</dl></div>\r
+<div class="para"><p>Finally, there is a fourth simplification mode available:</p></div>\r
+<div class="vlist"><dl>\r
+<dt>\r
+--simplify-merges\r
+</dt>\r
+<dd>\r
+<p>\r
+ First, build a history graph in the same way that\r
+ <em>--full-history</em> with parent rewriting does (see above).\r
+</p>\r
+<div class="para"><p>Then simplify each commit <tt>C</tt> to its replacement <tt>C'</tt> in the final\r
+history according to the following rules:</p></div>\r
+<div class="ilist"><ul>\r
+<li>\r
+<p>\r
+Set <tt>C'</tt> to <tt>C</tt>.<br />\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Replace each parent <tt>P</tt> of <tt>C'</tt> with its simplification <tt>P'</tt>. In\r
+ the process, drop parents that are ancestors of other parents, and\r
+ remove duplicates.<br />\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+If after this parent rewriting, <tt>C'</tt> is a root or merge commit (has\r
+ zero or >1 parents), a boundary commit, or !TREESAME, it remains.\r
+ Otherwise, it is replaced with its only parent.\r
+</p>\r
+</li>\r
+</ul></div>\r
+<div class="para"><p>The effect of this is best shown by way of comparing to\r
+<em>--full-history</em> with parent rewriting. The example turns into:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt> .-A---M---N---O\r
+ / / /\r
+ I B D\r
+ \ / /\r
+ `---------'</tt></pre>\r
+</div></div>\r
+<div class="para"><p>Note the major differences in <tt>N</tt> and <tt>P</tt> over <em>--full-history</em>:</p></div>\r
+<div class="ilist"><ul>\r
+<li>\r
+<p>\r
+<tt>N</tt>'s parent list had <tt>I</tt> removed, because it is an ancestor of the\r
+ other parent <tt>M</tt>. Still, <tt>N</tt> remained because it is !TREESAME.<br />\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+<tt>P</tt>'s parent list similarly had <tt>I</tt> removed. <tt>P</tt> was then\r
+ removed completely, because it had one parent and is TREESAME.\r
+</p>\r
+</li>\r
+</ul></div>\r
+</dd>\r
+</dl></div>\r
<h3 id="_commit_ordering">Commit Ordering</h3><div style="clear:left"></div>\r
<div class="para"><p>By default, the commits are shown in reverse chronological order.</p></div>\r
<div class="vlist"><dl>\r
</div>\r
<div id="footer">\r
<div id="footer-text">\r
-Last updated 2008-08-29 08:56:28 UTC\r
+Last updated 2008-09-03 05:19:58 UTC\r
</div>\r
</div>\r
</body>\r
sides of the merge are never walked.</p></div>\r
</dd>\r
</dl></div>\r
+<div class="para"><p>Finally, there is a fourth simplification mode available:</p></div>\r
+<div class="vlist"><dl>\r
+<dt>\r
+--simplify-merges\r
+</dt>\r
+<dd>\r
+<p>\r
+ First, build a history graph in the same way that\r
+ <em>--full-history</em> with parent rewriting does (see above).\r
+</p>\r
+<div class="para"><p>Then simplify each commit <tt>C</tt> to its replacement <tt>C'</tt> in the final\r
+history according to the following rules:</p></div>\r
+<div class="ilist"><ul>\r
+<li>\r
+<p>\r
+Set <tt>C'</tt> to <tt>C</tt>.<br />\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Replace each parent <tt>P</tt> of <tt>C'</tt> with its simplification <tt>P'</tt>. In\r
+ the process, drop parents that are ancestors of other parents, and\r
+ remove duplicates.<br />\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+If after this parent rewriting, <tt>C'</tt> is a root or merge commit (has\r
+ zero or >1 parents), a boundary commit, or !TREESAME, it remains.\r
+ Otherwise, it is replaced with its only parent.\r
+</p>\r
+</li>\r
+</ul></div>\r
+<div class="para"><p>The effect of this is best shown by way of comparing to\r
+<em>--full-history</em> with parent rewriting. The example turns into:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt> .-A---M---N---O\r
+ / / /\r
+ I B D\r
+ \ / /\r
+ `---------'</tt></pre>\r
+</div></div>\r
+<div class="para"><p>Note the major differences in <tt>N</tt> and <tt>P</tt> over <em>--full-history</em>:</p></div>\r
+<div class="ilist"><ul>\r
+<li>\r
+<p>\r
+<tt>N</tt>'s parent list had <tt>I</tt> removed, because it is an ancestor of the\r
+ other parent <tt>M</tt>. Still, <tt>N</tt> remained because it is !TREESAME.<br />\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+<tt>P</tt>'s parent list similarly had <tt>I</tt> removed. <tt>P</tt> was then\r
+ removed completely, because it had one parent and is TREESAME.\r
+</p>\r
+</li>\r
+</ul></div>\r
+</dd>\r
+</dl></div>\r
<h3 id="_bisection_helpers">Bisection Helpers</h3><div style="clear:left"></div>\r
<div class="vlist"><dl>\r
<dt>\r
</div>\r
<div id="footer">\r
<div id="footer-text">\r
-Last updated 2008-08-29 08:56:30 UTC\r
+Last updated 2008-09-03 05:19:58 UTC\r
</div>\r
</div>\r
</body>\r
<div class="listingblock">\r
<div class="content">\r
<pre><tt>$ git pull\r
-...\r
+ ...\r
file foobar not up to date, cannot merge.\r
$ git stash\r
$ git pull\r
</p>\r
<div class="listingblock">\r
<div class="content">\r
-<pre><tt>... hack hack hack ...\r
+<pre><tt># ... hack hack hack ...\r
$ git checkout -b my_wip\r
$ git commit -a -m "WIP"\r
$ git checkout master\r
$ git commit -a -m "Fix in a hurry"\r
$ git checkout my_wip\r
$ git reset --soft HEAD^\r
-... continue hacking ...</tt></pre>\r
+# ... continue hacking ...</tt></pre>\r
</div></div>\r
<div class="para"><p>You can use <em>git-stash</em> to simplify the above, like this:</p></div>\r
<div class="listingblock">\r
<div class="content">\r
-<pre><tt>... hack hack hack ...\r
+<pre><tt># ... hack hack hack ...\r
$ git stash\r
$ edit emergency fix\r
$ git commit -a -m "Fix in a hurry"\r
$ git stash apply\r
-... continue hacking ...</tt></pre>\r
+# ... continue hacking ...</tt></pre>\r
</div></div>\r
</dd>\r
<dt>\r
</p>\r
<div class="listingblock">\r
<div class="content">\r
-<pre><tt>... hack hack hack ...\r
+<pre><tt># ... hack hack hack ...\r
$ git add --patch foo # add just first part to the index\r
$ git stash save --keep-index # save all other changes to the stash\r
$ edit/build/test first part\r
-$ git commit foo -m 'First part' # commit fully tested change\r
+$ git commit -m 'First part' # commit fully tested change\r
$ git stash pop # prepare to work on all other changes\r
-... repeat above five steps until one commit remains ...\r
+# ... repeat above five steps until one commit remains ...\r
$ edit/build/test remaining parts\r
$ git commit foo -m 'Remaining parts'</tt></pre>\r
</div></div>\r
</div>\r
<div id="footer">\r
<div id="footer-text">\r
-Last updated 2008-08-16 10:22:58 UTC\r
+Last updated 2008-09-03 05:20:00 UTC\r
</div>\r
</div>\r
</body>\r
+
----------------------------------------------------------------
$ git pull
-...
+ ...
file foobar not up to date, cannot merge.
$ git stash
$ git pull
return to your original branch to make the emergency fix, like this:
+
----------------------------------------------------------------
-... hack hack hack ...
+# ... hack hack hack ...
$ git checkout -b my_wip
$ git commit -a -m "WIP"
$ git checkout master
$ git commit -a -m "Fix in a hurry"
$ git checkout my_wip
$ git reset --soft HEAD^
-... continue hacking ...
+# ... continue hacking ...
----------------------------------------------------------------
+
You can use 'git-stash' to simplify the above, like this:
+
----------------------------------------------------------------
-... hack hack hack ...
+# ... hack hack hack ...
$ git stash
$ edit emergency fix
$ git commit -a -m "Fix in a hurry"
$ git stash apply
-... continue hacking ...
+# ... continue hacking ...
----------------------------------------------------------------
Testing partial commits::
each change before committing:
+
----------------------------------------------------------------
-... hack hack hack ...
+# ... hack hack hack ...
$ git add --patch foo # add just first part to the index
$ git stash save --keep-index # save all other changes to the stash
$ edit/build/test first part
-$ git commit foo -m 'First part' # commit fully tested change
+$ git commit -m 'First part' # commit fully tested change
$ git stash pop # prepare to work on all other changes
-... repeat above five steps until one commit remains ...
+# ... repeat above five steps until one commit remains ...
$ edit/build/test remaining parts
$ git commit foo -m 'Remaining parts'
----------------------------------------------------------------
one of the parents is TREESAME, we follow only that one, so the other
sides of the merge are never walked.
+Finally, there is a fourth simplification mode available:
+
+--simplify-merges::
+
+ First, build a history graph in the same way that
+ '\--full-history' with parent rewriting does (see above).
++
+Then simplify each commit `C` to its replacement `C'` in the final
+history according to the following rules:
++
+--
+* Set `C'` to `C`.
++
+* Replace each parent `P` of `C'` with its simplification `P'`. In
+ the process, drop parents that are ancestors of other parents, and
+ remove duplicates.
++
+* If after this parent rewriting, `C'` is a root or merge commit (has
+ zero or >1 parents), a boundary commit, or !TREESAME, it remains.
+ Otherwise, it is replaced with its only parent.
+--
++
+The effect of this is best shown by way of comparing to
+'\--full-history' with parent rewriting. The example turns into:
++
+-----------------------------------------------------------------------
+ .-A---M---N---O
+ / / /
+ I B D
+ \ / /
+ `---------'
+-----------------------------------------------------------------------
++
+Note the major differences in `N` and `P` over '\--full-history':
++
+--
+* `N`'s parent list had `I` removed, because it is an ancestor of the
+ other parent `M`. Still, `N` remained because it is !TREESAME.
++
+* `P`'s parent list similarly had `I` removed. `P` was then
+ removed completely, because it had one parent and is TREESAME.
+--
ifdef::git-rev-list[]
Bisection Helpers