summaryrefslogtreecommitdiffstats
path: root/git-read-tree.html
diff options
context:
space:
mode:
authorJunio C Hamano <junio@kernel.org>2010-12-23 00:57:39 +0000
committerJunio C Hamano <junio@kernel.org>2010-12-23 00:57:39 +0000
commit5fa6d1a8c4dbc4a83996de323b5e4751819bfef6 (patch)
tree8213c1618f804be368e1ebd01d305fc717b11b6d /git-read-tree.html
parent18b5ad5e82efffc2d74788fb2b8133a9c274365f (diff)
downloadgit-htmldocs-5fa6d1a8c4dbc4a83996de323b5e4751819bfef6.tar.gz
Autogenerated HTML docs for v1.7.3.4-621-g48e0ad
Diffstat (limited to 'git-read-tree.html')
-rw-r--r--git-read-tree.html298
1 files changed, 193 insertions, 105 deletions
diff --git a/git-read-tree.html b/git-read-tree.html
index 0a0d2c470..b43fe976f 100644
--- a/git-read-tree.html
+++ b/git-read-tree.html
@@ -3,7 +3,8 @@
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
-<meta name="generator" content="AsciiDoc 8.2.5" />
+<meta name="generator" content="AsciiDoc 8.4.5" />
+<title>git-read-tree(1)</title>
<style type="text/css">
/* Debug borders */
p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {
@@ -26,10 +27,12 @@ a:visited {
em {
font-style: italic;
+ color: navy;
}
strong {
font-weight: bold;
+ color: #083194;
}
tt {
@@ -71,6 +74,10 @@ p {
margin-bottom: 0.5em;
}
+ul, ol, li > p {
+ margin-top: 0;
+}
+
pre {
padding: 0;
margin: 0;
@@ -84,7 +91,7 @@ span#author {
}
span#email {
}
-span#revision {
+span#revnumber, span#revdate, span#revremark {
font-family: sans-serif;
}
@@ -104,11 +111,13 @@ div#footer-badges {
padding-bottom: 0.5em;
}
-div#preamble,
+div#preamble {
+ margin-top: 1.5em;
+ margin-bottom: 1.5em;
+}
div.tableblock, div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
- margin-right: 10%;
margin-top: 1.5em;
margin-bottom: 1.5em;
}
@@ -123,6 +132,7 @@ div.content { /* Block element content. */
/* Block element titles. */
div.title, caption.title {
+ color: #527bbd;
font-family: sans-serif;
font-weight: bold;
text-align: left;
@@ -149,22 +159,33 @@ div.sidebarblock > div.content {
padding: 0.5em;
}
-div.listingblock {
- margin-right: 0%;
-}
div.listingblock > div.content {
border: 1px solid silver;
background: #f4f4f4;
padding: 0.5em;
}
-div.quoteblock > div.content {
+div.quoteblock {
padding-left: 2.0em;
+ margin-right: 10%;
}
-
-div.attribution {
+div.quoteblock > div.attribution {
+ padding-top: 0.5em;
text-align: right;
}
+
+div.verseblock {
+ padding-left: 2.0em;
+ margin-right: 10%;
+}
+div.verseblock > div.content {
+ white-space: pre;
+}
+div.verseblock > div.attribution {
+ padding-top: 0.75em;
+ text-align: left;
+}
+/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
text-align: left;
}
@@ -187,13 +208,9 @@ div.exampleblock > div.content {
padding: 0.5em;
}
-div.verseblock div.content {
- white-space: pre;
-}
-
div.imageblock div.content { padding-left: 0; }
-div.imageblock img { border: 1px solid silver; }
span.image img { border-style: none; }
+a.image:visited { color: white; }
dl {
margin-top: 0.8em;
@@ -202,18 +219,38 @@ dl {
dt {
margin-top: 0.5em;
margin-bottom: 0;
- font-style: italic;
+ font-style: normal;
+ color: navy;
}
dd > *:first-child {
- margin-top: 0;
+ margin-top: 0.1em;
}
ul, ol {
list-style-position: outside;
}
-div.olist2 ol {
+ol.arabic {
+ list-style-type: decimal;
+}
+ol.loweralpha {
list-style-type: lower-alpha;
}
+ol.upperalpha {
+ list-style-type: upper-alpha;
+}
+ol.lowerroman {
+ list-style-type: lower-roman;
+}
+ol.upperroman {
+ list-style-type: upper-roman;
+}
+
+div.compact ul, div.compact ol,
+div.compact p, div.compact p,
+div.compact div, div.compact div {
+ margin-top: 0.1em;
+ margin-bottom: 0.1em;
+}
div.tableblock > table {
border: 3px solid #527bbd;
@@ -225,22 +262,53 @@ thead {
tfoot {
font-weight: bold;
}
+td > div.verse {
+ white-space: pre;
+}
+p.table {
+ margin-top: 0;
+}
+/* Because the table frame attribute is overriden by CSS in most browsers. */
+div.tableblock > table[frame="void"] {
+ border-style: none;
+}
+div.tableblock > table[frame="hsides"] {
+ border-left-style: none;
+ border-right-style: none;
+}
+div.tableblock > table[frame="vsides"] {
+ border-top-style: none;
+ border-bottom-style: none;
+}
+
-div.hlist {
+div.hdlist {
margin-top: 0.8em;
margin-bottom: 0.8em;
}
-div.hlist td {
- padding-bottom: 5px;
+div.hdlist tr {
+ padding-bottom: 15px;
}
-td.hlist1 {
+dt.hdlist1.strong, td.hdlist1.strong {
+ font-weight: bold;
+}
+td.hdlist1 {
vertical-align: top;
- font-style: italic;
+ font-style: normal;
padding-right: 0.8em;
+ color: navy;
}
-td.hlist2 {
+td.hdlist2 {
vertical-align: top;
}
+div.hdlist.compact tr {
+ margin: 0;
+ padding-bottom: 0;
+}
+
+.comment {
+ background: yellow;
+}
@media print {
div#footer-badges { display: none; }
@@ -271,7 +339,24 @@ div.toclevel4 {
margin-left: 6em;
font-size: 0.9em;
}
-include1::./stylesheets/xhtml11-manpage.css[]
+/* Overrides for manpage documents */
+h1 {
+ padding-top: 0.5em;
+ padding-bottom: 0.5em;
+ border-top: 2px solid silver;
+ border-bottom: 2px solid silver;
+}
+h2 {
+ border-style: none;
+}
+div.sectionbody {
+ margin-left: 5%;
+}
+
+@media print {
+ div#toc { display: none; }
+}
+
/* Workarounds for IE6's broken and incomplete CSS2. */
div.sidebar-content {
@@ -280,6 +365,7 @@ div.sidebar-content {
padding: 0.5em;
}
div.sidebar-title, div.image-title {
+ color: #527bbd;
font-family: sans-serif;
font-weight: bold;
margin-top: 0.0em;
@@ -292,8 +378,17 @@ div.listingblock div.content {
padding: 0.5em;
}
-div.quoteblock-content {
- padding-left: 2.0em;
+div.quoteblock-attribution {
+ padding-top: 0.5em;
+ text-align: right;
+}
+
+div.verseblock-content {
+ white-space: pre;
+}
+div.verseblock-attribution {
+ padding-top: 0.75em;
+ text-align: left;
}
div.exampleblock-content {
@@ -304,7 +399,6 @@ div.exampleblock-content {
/* IE6 sets dynamically generated links as visited. */
div#toc a:visited { color: blue; }
</style>
-<title>git-read-tree(1)</title>
</head>
<body>
<div id="header">
@@ -318,29 +412,29 @@ git-read-tree(1) Manual Page
</p>
</div>
</div>
-<h2>SYNOPSIS</h2>
+<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
-<div class="para"><p><em>git read-tree</em> [[-m [--trivial] [--aggressive] | --reset | --prefix=&lt;prefix&gt;]
+<div class="paragraph"><p><em>git read-tree</em> [[-m [--trivial] [--aggressive] | --reset | --prefix=&lt;prefix&gt;]
[-u [--exclude-per-directory=&lt;gitignore&gt;] | -i]]
[--index-output=&lt;file&gt;] [--no-sparse-checkout]
(--empty | &lt;tree-ish1&gt; [&lt;tree-ish2&gt; [&lt;tree-ish3&gt;]])</p></div>
</div>
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
-<div class="para"><p>Reads the tree information given by &lt;tree-ish&gt; into the index,
+<div class="paragraph"><p>Reads the tree information given by &lt;tree-ish&gt; into the index,
but does not actually <strong>update</strong> any of the files it "caches". (see:
<a href="git-checkout-index.html">git-checkout-index(1)</a>)</p></div>
-<div class="para"><p>Optionally, it can merge a tree into the index, perform a
+<div class="paragraph"><p>Optionally, it can merge a tree into the index, perform a
fast-forward (i.e. 2-way) merge, or a 3-way merge, with the <tt>-m</tt>
flag. When used with <tt>-m</tt>, the <tt>-u</tt> flag causes it to also update
the files in the work tree with the result of the merge.</p></div>
-<div class="para"><p>Trivial merges are done by <em>git read-tree</em> itself. Only conflicting paths
+<div class="paragraph"><p>Trivial merges are done by <em>git read-tree</em> itself. Only conflicting paths
will be in unmerged state when <em>git read-tree</em> returns.</p></div>
</div>
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
-<div class="vlist"><dl>
-<dt>
+<div class="dlist"><dl>
+<dt class="hdlist1">
-m
</dt>
<dd>
@@ -351,7 +445,7 @@ will be in unmerged state when <em>git read-tree</em> returns.</p></div>
started.
</p>
</dd>
-<dt>
+<dt class="hdlist1">
--reset
</dt>
<dd>
@@ -360,7 +454,7 @@ will be in unmerged state when <em>git read-tree</em> returns.</p></div>
instead of failing.
</p>
</dd>
-<dt>
+<dt class="hdlist1">
-u
</dt>
<dd>
@@ -369,7 +463,7 @@ will be in unmerged state when <em>git read-tree</em> returns.</p></div>
tree with the result of the merge.
</p>
</dd>
-<dt>
+<dt class="hdlist1">
-i
</dt>
<dd>
@@ -383,7 +477,7 @@ will be in unmerged state when <em>git read-tree</em> returns.</p></div>
working tree status into a temporary index file.
</p>
</dd>
-<dt>
+<dt class="hdlist1">
-v
</dt>
<dd>
@@ -391,7 +485,7 @@ will be in unmerged state when <em>git read-tree</em> returns.</p></div>
Show the progress of checking files out.
</p>
</dd>
-<dt>
+<dt class="hdlist1">
--trivial
</dt>
<dd>
@@ -402,7 +496,7 @@ will be in unmerged state when <em>git read-tree</em> returns.</p></div>
conflicting files unresolved in the index.
</p>
</dd>
-<dt>
+<dt class="hdlist1">
--aggressive
</dt>
<dd>
@@ -413,7 +507,7 @@ will be in unmerged state when <em>git read-tree</em> returns.</p></div>
implement different merge policies. This flag makes the
command to resolve a few more cases internally:
</p>
-<div class="ilist"><ul>
+<div class="ulist"><ul>
<li>
<p>
when one side removes a path and the other side leaves the path
@@ -433,7 +527,7 @@ when both sides adds a path identically. The resolution
</li>
</ul></div>
</dd>
-<dt>
+<dt class="hdlist1">
--prefix=&lt;prefix&gt;/
</dt>
<dd>
@@ -446,7 +540,7 @@ when both sides adds a path identically. The resolution
with a slash.
</p>
</dd>
-<dt>
+<dt class="hdlist1">
--exclude-per-directory=&lt;gitignore&gt;
</dt>
<dd>
@@ -466,7 +560,7 @@ when both sides adds a path identically. The resolution
but explicitly ignored file to be overwritten.
</p>
</dd>
-<dt>
+<dt class="hdlist1">
--index-output=&lt;file&gt;
</dt>
<dd>
@@ -483,7 +577,7 @@ when both sides adds a path identically. The resolution
located in.
</p>
</dd>
-<dt>
+<dt class="hdlist1">
--no-sparse-checkout
</dt>
<dd>
@@ -492,7 +586,7 @@ when both sides adds a path identically. The resolution
is true.
</p>
</dd>
-<dt>
+<dt class="hdlist1">
--empty
</dt>
<dd>
@@ -501,7 +595,7 @@ when both sides adds a path identically. The resolution
it.
</p>
</dd>
-<dt>
+<dt class="hdlist1">
&lt;tree-ish#&gt;
</dt>
<dd>
@@ -513,29 +607,29 @@ when both sides adds a path identically. The resolution
</div>
<h2 id="_merging">Merging</h2>
<div class="sectionbody">
-<div class="para"><p>If <tt>-m</tt> is specified, <em>git read-tree</em> can perform 3 kinds of
+<div class="paragraph"><p>If <tt>-m</tt> is specified, <em>git read-tree</em> can perform 3 kinds of
merge, a single tree merge if only 1 tree is given, a
fast-forward merge with 2 trees, or a 3-way merge if 3 trees are
provided.</p></div>
<h3 id="_single_tree_merge">Single Tree Merge</h3><div style="clear:left"></div>
-<div class="para"><p>If only 1 tree is specified, <em>git read-tree</em> operates as if the user did not
+<div class="paragraph"><p>If only 1 tree is specified, <em>git read-tree</em> operates as if the user did not
specify <tt>-m</tt>, except that if the original index has an entry for a
given pathname, and the contents of the path match with the tree
being read, the stat info from the index is used. (In other words, the
-index's stat()s take precedence over the merged tree's).</p></div>
-<div class="para"><p>That means that if you do a <tt>git read-tree -m &lt;newtree&gt;</tt> followed by a
+index&#8217;s stat()s take precedence over the merged tree&#8217;s).</p></div>
+<div class="paragraph"><p>That means that if you do a <tt>git read-tree -m &lt;newtree&gt;</tt> followed by a
<tt>git checkout-index -f -u -a</tt>, the <em>git checkout-index</em> only checks out
the stuff that really changed.</p></div>
-<div class="para"><p>This is used to avoid unnecessary false hits when <em>git diff-files</em> is
+<div class="paragraph"><p>This is used to avoid unnecessary false hits when <em>git diff-files</em> is
run after <em>git read-tree</em>.</p></div>
<h3 id="_two_tree_merge">Two Tree Merge</h3><div style="clear:left"></div>
-<div class="para"><p>Typically, this is invoked as <tt>git read-tree -m $H $M</tt>, where $H
+<div class="paragraph"><p>Typically, this is invoked as <tt>git read-tree -m $H $M</tt>, where $H
is the head commit of the current repository, and $M is the head
of a foreign tree, which is simply ahead of $H (i.e. we are in a
fast-forward situation).</p></div>
-<div class="para"><p>When two trees are specified, the user is telling <em>git read-tree</em>
+<div class="paragraph"><p>When two trees are specified, the user is telling <em>git read-tree</em>
the following:</p></div>
-<div class="olist"><ol>
+<div class="olist arabic"><ol class="arabic">
<li>
<p>
The current index and work tree is derived from $H, but
@@ -548,7 +642,7 @@ The user wants to fast-forward to $M.
</p>
</li>
</ol></div>
-<div class="para"><p>In this case, the <tt>git read-tree -m $H $M</tt> command makes sure
+<div class="paragraph"><p>In this case, the <tt>git read-tree -m $H $M</tt> command makes sure
that no local change is lost as the result of this "merge".
Here are the "carry forward" rules, where "I" denotes the index,
"clean" means that index and work tree coincide, and "exists"/"nothing"
@@ -604,11 +698,11 @@ refer to the presence of a path in the specified commit:</p></div>
20 yes yes no exists exists use M
21 no yes no exists exists fail</tt></pre>
</div></div>
-<div class="para"><p>In all "keep index" cases, the index entry stays as in the
+<div class="paragraph"><p>In all "keep index" cases, the index entry stays as in the
original index file. If the entry is not up to date,
<em>git read-tree</em> keeps the copy in the work tree intact when
operating under the -u flag.</p></div>
-<div class="para"><p>When this form of <em>git read-tree</em> returns successfully, you can
+<div class="paragraph"><p>When this form of <em>git read-tree</em> returns successfully, you can
see which of the "local changes" that you made were carried forward by running
<tt>git diff-index --cached $M</tt>. Note that this does not
necessarily match what <tt>git diff-index --cached $H</tt> would have
@@ -618,32 +712,32 @@ you picked it up via e-mail in a patch form), <tt>git diff-index
--cached $H</tt> would have told you about the change before this
merge, but it would not show in <tt>git diff-index --cached $M</tt>
output after the two-tree merge.</p></div>
-<div class="para"><p>Case 3 is slightly tricky and needs explanation. The result from this
+<div class="paragraph"><p>Case 3 is slightly tricky and needs explanation. The result from this
rule logically should be to remove the path if the user staged the removal
of the path and then switching to a new branch. That however will prevent
the initial checkout from happening, so the rule is modified to use M (new
tree) only when the content of the index is empty. Otherwise the removal
of the path is kept as long as $H and $M are the same.</p></div>
<h3 id="_3_way_merge">3-Way Merge</h3><div style="clear:left"></div>
-<div class="para"><p>Each "index" entry has two bits worth of "stage" state. stage 0 is the
-normal one, and is the only one you'd see in any kind of normal use.</p></div>
-<div class="para"><p>However, when you do <em>git read-tree</em> with three trees, the "stage"
+<div class="paragraph"><p>Each "index" entry has two bits worth of "stage" state. stage 0 is the
+normal one, and is the only one you&#8217;d see in any kind of normal use.</p></div>
+<div class="paragraph"><p>However, when you do <em>git read-tree</em> with three trees, the "stage"
starts out at 1.</p></div>
-<div class="para"><p>This means that you can do</p></div>
+<div class="paragraph"><p>This means that you can do</p></div>
<div class="listingblock">
<div class="content">
<pre><tt>$ git read-tree -m &lt;tree1&gt; &lt;tree2&gt; &lt;tree3&gt;</tt></pre>
</div></div>
-<div class="para"><p>and you will end up with an index with all of the &lt;tree1&gt; entries in
+<div class="paragraph"><p>and you will end up with an index with all of the &lt;tree1&gt; entries in
"stage1", all of the &lt;tree2&gt; entries in "stage2" and all of the
&lt;tree3&gt; entries in "stage3". When performing a merge of another
branch into the current branch, we use the common ancestor tree
as &lt;tree1&gt;, the current branch head as &lt;tree2&gt;, and the other
branch head as &lt;tree3&gt;.</p></div>
-<div class="para"><p>Furthermore, <em>git read-tree</em> has special-case logic that says: if you see
+<div class="paragraph"><p>Furthermore, <em>git read-tree</em> has special-case logic that says: if you see
a file that matches in all respects in the following states, it
"collapses" back to "stage0":</p></div>
-<div class="ilist"><ul>
+<div class="ulist"><ul>
<li>
<p>
stage 2 and 3 are the same; take one or the other (it makes no
@@ -666,19 +760,19 @@ stage 1 and stage 3 are the same and stage 2 is different take
</p>
</li>
</ul></div>
-<div class="para"><p>The <em>git write-tree</em> command refuses to write a nonsensical tree, and it
+<div class="paragraph"><p>The <em>git write-tree</em> command refuses to write a nonsensical tree, and it
will complain about unmerged entries if it sees a single entry that is not
stage 0.</p></div>
-<div class="para"><p>OK, this all sounds like a collection of totally nonsensical rules,
-but it's actually exactly what you want in order to do a fast
+<div class="paragraph"><p>OK, this all sounds like a collection of totally nonsensical rules,
+but it&#8217;s actually exactly what you want in order to do a fast
merge. The different stages represent the "result tree" (stage 0, aka
"merged"), the original tree (stage 1, aka "orig"), and the two trees
you are trying to merge (stage 2 and 3 respectively).</p></div>
-<div class="para"><p>The order of stages 1, 2 and 3 (hence the order of three
+<div class="paragraph"><p>The order of stages 1, 2 and 3 (hence the order of three
&lt;tree-ish&gt; command line arguments) are significant when you
start a 3-way merge with an index file that is already
populated. Here is an outline of how the algorithm works:</p></div>
-<div class="ilist"><ul>
+<div class="ulist"><ul>
<li>
<p>
if a file exists in identical format in all three trees, it will
@@ -687,8 +781,8 @@ if a file exists in identical format in all three trees, it will
</li>
<li>
<p>
-a file that has _any_ difference what-so-ever in the three trees
- will stay as separate entries in the index. It's up to "porcelain
+a file that has <em>any</em> difference what-so-ever in the three trees
+ will stay as separate entries in the index. It&#8217;s up to "porcelain
policy" to determine how to remove the non-0 stages, and insert a
merged version.
</p>
@@ -697,20 +791,20 @@ a file that has _any_ difference what-so-ever in the three trees
<p>
the index file saves and restores with all this information, so you
can merge things incrementally, but as long as it has entries in
- stages 1/2/3 (i.e., "unmerged entries") you can't write the result. So
+ stages 1/2/3 (i.e., "unmerged entries") you can&#8217;t write the result. So
now the merge algorithm ends up being really simple:
</p>
-<div class="ilist"><ul>
+<div class="ulist"><ul>
<li>
<p>
you walk the index in order, and ignore all entries of stage 0,
- since they've already been done.
+ since they&#8217;ve already been done.
</p>
</li>
<li>
<p>
if you find a "stage1", but no matching "stage2" or "stage3", you
- know it's been removed from both trees (it only existed in the
+ know it&#8217;s been removed from both trees (it only existed in the
original tree), and you remove that entry.
</p>
</li>
@@ -725,18 +819,18 @@ if you find a matching "stage2" and "stage3" tree, you remove one
</ul></div>
</li>
</ul></div>
-<div class="para"><p>You would normally use <em>git merge-index</em> with supplied
+<div class="paragraph"><p>You would normally use <em>git merge-index</em> with supplied
<em>git merge-one-file</em> to do this last step. The script updates
the files in the working tree as it merges each path and at the
end of a successful merge.</p></div>
-<div class="para"><p>When you start a 3-way merge with an index file that is already
+<div class="paragraph"><p>When you start a 3-way merge with an index file that is already
populated, it is assumed that it represents the state of the
files in your work tree, and you can even have files with
changes unrecorded in the index file. It is further assumed
that this state is "derived" from the stage 2 tree. The 3-way
merge refuses to run if it finds an entry in the original index
file that does not match stage 2.</p></div>
-<div class="para"><p>This is done to prevent you from losing your work-in-progress
+<div class="paragraph"><p>This is done to prevent you from losing your work-in-progress
changes, and mixing your random changes in an unrelated merge
commit. To illustrate, suppose you start from what has been
committed last to your repository:</p></div>
@@ -745,7 +839,7 @@ committed last to your repository:</p></div>
<pre><tt>$ JC=`git rev-parse --verify "HEAD^0"`
$ git checkout-index -f -u -a $JC</tt></pre>
</div></div>
-<div class="para"><p>You do random edits, without running <em>git update-index</em>. And then
+<div class="paragraph"><p>You do random edits, without running <em>git update-index</em>. And then
you notice that the tip of your "upstream" tree has advanced
since you pulled from him:</p></div>
<div class="listingblock">
@@ -753,9 +847,9 @@ since you pulled from him:</p></div>
<pre><tt>$ git fetch git://.... linus
$ LT=`cat .git/FETCH_HEAD`</tt></pre>
</div></div>
-<div class="para"><p>Your work tree is still based on your HEAD ($JC), but you have
+<div class="paragraph"><p>Your work tree is still based on your HEAD ($JC), but you have
some edits since. Three-way merge makes sure that you have not
-added or modified index entries since $JC, and if you haven't,
+added or modified index entries since $JC, and if you haven&#8217;t,
then does the right thing. So with the following sequence:</p></div>
<div class="listingblock">
<div class="content">
@@ -764,13 +858,13 @@ $ git merge-index git-merge-one-file -a
$ echo "Merge with Linus" | \
git commit-tree `git write-tree` -p $JC -p $LT</tt></pre>
</div></div>
-<div class="para"><p>what you would commit is a pure merge between $JC and $LT without
+<div class="paragraph"><p>what you would commit is a pure merge between $JC and $LT without
your work-in-progress changes, and your work tree would be
updated to the result of the merge.</p></div>
-<div class="para"><p>However, if you have local changes in the working tree that
+<div class="paragraph"><p>However, if you have local changes in the working tree that
would be overwritten by this merge, <em>git read-tree</em> will refuse
to run to prevent your changes from being lost.</p></div>
-<div class="para"><p>In other words, there is no need to worry about what exists only
+<div class="paragraph"><p>In other words, there is no need to worry about what exists only
in the working tree. When you have local changes in a part of
the project that is not involved in the merge, your changes do
not interfere with the merge, and are kept intact. When they
@@ -782,10 +876,10 @@ have finished your work-in-progress), attempt the merge again.</p></div>
</div>
<h2 id="_sparse_checkout">Sparse checkout</h2>
<div class="sectionbody">
-<div class="para"><p>"Sparse checkout" allows to sparsely populate working directory.
+<div class="paragraph"><p>"Sparse checkout" allows to sparsely populate working directory.
It uses skip-worktree bit (see <a href="git-update-index.html">git-update-index(1)</a>) to tell
Git whether a file on working directory is worth looking at.</p></div>
-<div class="para"><p>"git read-tree" and other merge-based commands ("git merge", "git
+<div class="paragraph"><p>"git read-tree" and other merge-based commands ("git merge", "git
checkout"&#8230;) can help maintaining skip-worktree bitmap and working
directory update. <tt>$GIT_DIR/info/sparse-checkout</tt> is used to
define the skip-worktree reference bitmap. When "git read-tree" needs
@@ -793,18 +887,18 @@ to update working directory, it will reset skip-worktree bit in index
based on this file, which uses the same syntax as .gitignore files.
If an entry matches a pattern in this file, skip-worktree will be
set on that entry. Otherwise, skip-worktree will be unset.</p></div>
-<div class="para"><p>Then it compares the new skip-worktree value with the previous one. If
+<div class="paragraph"><p>Then it compares the new skip-worktree value with the previous one. If
skip-worktree turns from unset to set, it will add the corresponding
file back. If it turns from set to unset, that file will be removed.</p></div>
-<div class="para"><p>While <tt>$GIT_DIR/info/sparse-checkout</tt> is usually used to specify what
-files are in. You can also specify what files are _not_ in, using
+<div class="paragraph"><p>While <tt>$GIT_DIR/info/sparse-checkout</tt> is usually used to specify what
+files are in. You can also specify what files are <em>not</em> in, using
negate patterns. For example, to remove file "unwanted":</p></div>
<div class="listingblock">
<div class="content">
<pre><tt>*
!unwanted</tt></pre>
</div></div>
-<div class="para"><p>Another tricky thing is fully repopulating working directory when you
+<div class="paragraph"><p>Another tricky thing is fully repopulating working directory when you
no longer want sparse checkout. You cannot just disable "sparse
checkout" because skip-worktree are still in the index and you working
directory is still sparsely populated. You should re-populate working
@@ -814,37 +908,31 @@ follows:</p></div>
<div class="content">
<pre><tt>*</tt></pre>
</div></div>
-<div class="para"><p>Then you can disable sparse checkout. Sparse checkout support in "git
+<div class="paragraph"><p>Then you can disable sparse checkout. Sparse checkout support in "git
read-tree" and similar commands is disabled by default. You need to
turn <tt>core.sparseCheckout</tt> on in order to have sparse checkout
support.</p></div>
</div>
-<h2 id="_bugs">BUGS</h2>
-<div class="sectionbody">
-<div class="para"><p>In order to match a directory with $GIT_DIR/info/sparse-checkout,
-trailing slash must be used. The form without trailing slash, while
-works with .gitignore, does not work with sparse checkout.</p></div>
-</div>
<h2 id="_see_also">SEE ALSO</h2>
<div class="sectionbody">
-<div class="para"><p><a href="git-write-tree.html">git-write-tree(1)</a>; <a href="git-ls-files.html">git-ls-files(1)</a>;
+<div class="paragraph"><p><a href="git-write-tree.html">git-write-tree(1)</a>; <a href="git-ls-files.html">git-ls-files(1)</a>;
<a href="gitignore.html">gitignore(5)</a></p></div>
</div>
<h2 id="_author">Author</h2>
<div class="sectionbody">
-<div class="para"><p>Written by Linus Torvalds &lt;torvalds@osdl.org&gt;</p></div>
+<div class="paragraph"><p>Written by Linus Torvalds &lt;<a href="mailto:torvalds@osdl.org">torvalds@osdl.org</a>&gt;</p></div>
</div>
<h2 id="_documentation">Documentation</h2>
<div class="sectionbody">
-<div class="para"><p>Documentation by David Greaves, Junio C Hamano and the git-list &lt;git@vger.kernel.org&gt;.</p></div>
+<div class="paragraph"><p>Documentation by David Greaves, Junio C Hamano and the git-list &lt;<a href="mailto:git@vger.kernel.org">git@vger.kernel.org</a>&gt;.</p></div>
</div>
<h2 id="_git">GIT</h2>
<div class="sectionbody">
-<div class="para"><p>Part of the <a href="git.html">git(1)</a> suite</p></div>
+<div class="paragraph"><p>Part of the <a href="git.html">git(1)</a> suite</p></div>
</div>
<div id="footer">
<div id="footer-text">
-Last updated 2010-09-30 00:02:59 UTC
+Last updated 2010-12-23 00:57:21 UTC
</div>
</div>
</body>