summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2023-11-09 02:06:09 +0900
committerJunio C Hamano <gitster@pobox.com>2023-11-09 02:06:09 +0900
commit9f9f4f061623927f068bbd868977da3af0aaf045 (patch)
treea2ccd145b71eb3483f3f8e86b06d27ce650c91a1
parent7a133713b32080684945c44192842ee4781738b8 (diff)
downloadgit-htmldocs-9f9f4f061623927f068bbd868977da3af0aaf045.tar.gz
Autogenerated HTML docs for v2.43.0-rc1
-rw-r--r--MyFirstContribution.html2
-rw-r--r--MyFirstObjectWalk.html2
-rw-r--r--RelNotes/2.43.0.txt25
-rw-r--r--ReviewingGuidelines.html2
-rw-r--r--SubmittingPatches.html4
-rw-r--r--ToolsForGit.html2
-rw-r--r--everyday.html2
-rw-r--r--git-bisect-lk2009.html2
-rw-r--r--git-merge-file.html47
-rw-r--r--git-merge-file.txt38
-rw-r--r--git-remote-helpers.html2
-rw-r--r--git-show-ref.html27
-rw-r--r--git-show-ref.txt20
-rw-r--r--git-tools.html2
-rw-r--r--git.html16
-rw-r--r--git.txt10
-rw-r--r--gitformat-pack.html11
-rw-r--r--gitformat-pack.txt9
-rw-r--r--howto-index.html4
-rw-r--r--howto/coordinate-embargoed-releases.html2
-rw-r--r--howto/keep-canonical-history-correct.html4
-rw-r--r--howto/maintain-git.html4
-rw-r--r--howto/new-command.html4
-rw-r--r--howto/rebase-from-internal-branch.html4
-rw-r--r--howto/rebuild-from-update-hook.html4
-rw-r--r--howto/recover-corrupted-blob-object.html4
-rw-r--r--howto/recover-corrupted-object-harder.html4
-rw-r--r--howto/revert-a-faulty-merge.html4
-rw-r--r--howto/revert-branch-rebase.html4
-rw-r--r--howto/separating-topic-branches.html4
-rw-r--r--howto/setup-git-server-over-http.html4
-rw-r--r--howto/update-hook-example.html4
-rw-r--r--howto/use-git-daemon.html4
-rw-r--r--howto/using-merge-subtree.html4
-rw-r--r--howto/using-signed-tag-in-pull-request.html4
-rw-r--r--technical/api-error-handling.html2
-rw-r--r--technical/api-index.html4
-rw-r--r--technical/api-merge.html2
-rw-r--r--technical/api-parse-options.html2
-rw-r--r--technical/api-simple-ipc.html2
-rw-r--r--technical/api-trace2.html2
-rw-r--r--technical/bitmap-format.html2
-rw-r--r--technical/bundle-uri.html2
-rw-r--r--technical/hash-function-transition.html2
-rw-r--r--technical/long-running-process-protocol.html2
-rw-r--r--technical/multi-pack-index.html2
-rw-r--r--technical/pack-heuristics.html2
-rw-r--r--technical/parallel-checkout.html2
-rw-r--r--technical/partial-clone.html2
-rw-r--r--technical/racy-git.html2
-rw-r--r--technical/scalar.html2
-rw-r--r--technical/send-pack-pipeline.html2
-rw-r--r--technical/shallow.html2
-rw-r--r--technical/trivial-merge.html2
-rw-r--r--user-manual.html2
55 files changed, 227 insertions, 104 deletions
diff --git a/MyFirstContribution.html b/MyFirstContribution.html
index a089db99b..d5e0734c4 100644
--- a/MyFirstContribution.html
+++ b/MyFirstContribution.html
@@ -735,7 +735,7 @@ asciidoc.install();
<body class="article">
<div id="header">
<h1>My First Contribution to the Git Project</h1>
-<span id="revdate">2023-11-03</span>
+<span id="revdate">2023-11-08</span>
</div>
<div id="content">
<div class="sect1">
diff --git a/MyFirstObjectWalk.html b/MyFirstObjectWalk.html
index 83281244f..b71c5a2ba 100644
--- a/MyFirstObjectWalk.html
+++ b/MyFirstObjectWalk.html
@@ -735,7 +735,7 @@ asciidoc.install();
<body class="article">
<div id="header">
<h1>My First Object Walk</h1>
-<span id="revdate">2023-11-03</span>
+<span id="revdate">2023-11-08</span>
</div>
<div id="content">
<div class="sect1">
diff --git a/RelNotes/2.43.0.txt b/RelNotes/2.43.0.txt
index 836fcb543..74f304b1b 100644
--- a/RelNotes/2.43.0.txt
+++ b/RelNotes/2.43.0.txt
@@ -99,6 +99,9 @@ UI, Workflows & Features
* The attribute subsystem learned to honor `attr.tree` configuration
that specifies which tree to read the .gitattributes files from.
+ * "git merge-file" learns a mode to read three contents to be merged
+ from blob objects.
+
Performance, Internal Implementation, Development Support etc.
@@ -134,11 +137,13 @@ Performance, Internal Implementation, Development Support etc.
* The code to iterate over loose references have been optimized to
reduce the number of lstat() system calls.
- (merge 2cdb796101 vd/loose-ref-iteration-optimization later to maint).
* The codepaths that read "chunk" formatted files have been corrected
to pay attention to the chunk size and notice broken files.
+ * Replace macos-12 used at GitHub CI with macos-13.
+ (merge 682a868f67 js/ci-use-macos-13 later to maint).
+
Fixes since v2.42
-----------------
@@ -282,5 +287,23 @@ Fixes since v2.42
* "git bugreport" learned to complain when it received a command line
argument that it will not use.
+ * The codepath to traverse the commit-graph learned to notice that a
+ commit is missing (e.g., corrupt repository lost an object), even
+ though it knows something about the commit (like its parents) from
+ what is in commit-graph.
+ (merge 7a5d604443 ps/do-not-trust-commit-graph-blindly-for-existence later to maint).
+
+ * "git rev-list --missing" did not work for missing commit objects,
+ which has been corrected.
+
+ * "git rev-list --unpacked --objects" failed to exclude packed
+ non-commit objects, which has been corrected.
+ (merge 7b3c8e9f38 tb/rev-list-unpacked-fix later to maint).
+
* Other code cleanup, docfix, build fix, etc.
(merge c2c349a15c xz/commit-title-soft-limit-doc later to maint).
+ (merge 1bd809938a tb/format-pack-doc-update later to maint).
+ (merge 8f81532599 an/clang-format-typofix later to maint).
+ (merge 3ca86adc2d la/strvec-header-fix later to maint).
+ (merge 6789275d37 jc/test-i18ngrep later to maint).
+ (merge 9972cd6004 ps/leakfixes later to maint).
diff --git a/ReviewingGuidelines.html b/ReviewingGuidelines.html
index 0565419fc..543c19591 100644
--- a/ReviewingGuidelines.html
+++ b/ReviewingGuidelines.html
@@ -735,7 +735,7 @@ asciidoc.install();
<body class="article">
<div id="header">
<h1>Reviewing Patches in the Git Project</h1>
-<span id="revdate">2023-11-03</span>
+<span id="revdate">2023-11-08</span>
</div>
<div id="content">
<div class="sect1">
diff --git a/SubmittingPatches.html b/SubmittingPatches.html
index 9bd4383c2..5ee23191e 100644
--- a/SubmittingPatches.html
+++ b/SubmittingPatches.html
@@ -735,7 +735,7 @@ asciidoc.install();
<body class="article">
<div id="header">
<h1>Submitting Patches</h1>
-<span id="revdate">2023-11-03</span>
+<span id="revdate">2023-11-08</span>
</div>
<div id="content">
<div class="sect1">
@@ -1518,7 +1518,7 @@ this problem around.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2023-11-07 12:13:08 JST
+ 2023-11-09 02:04:37 JST
</div>
</div>
</body>
diff --git a/ToolsForGit.html b/ToolsForGit.html
index 7e49aeb9b..cd0c825c7 100644
--- a/ToolsForGit.html
+++ b/ToolsForGit.html
@@ -735,7 +735,7 @@ asciidoc.install();
<body class="article">
<div id="header">
<h1>Tools for developing Git</h1>
-<span id="revdate">2023-11-03</span>
+<span id="revdate">2023-11-08</span>
</div>
<div id="content">
<div class="sect1">
diff --git a/everyday.html b/everyday.html
index 4c70b31ad..6e6749d0f 100644
--- a/everyday.html
+++ b/everyday.html
@@ -735,7 +735,7 @@ asciidoc.install();
<body class="article">
<div id="header">
<h1>Everyday Git With 20 Commands Or So</h1>
-<span id="revdate">2023-11-03</span>
+<span id="revdate">2023-11-08</span>
</div>
<div id="content">
<div id="preamble">
diff --git a/git-bisect-lk2009.html b/git-bisect-lk2009.html
index 3066aaa65..33dbec451 100644
--- a/git-bisect-lk2009.html
+++ b/git-bisect-lk2009.html
@@ -737,7 +737,7 @@ asciidoc.install();
<h1>Fighting regressions with git bisect</h1>
<span id="author">Christian Couder</span><br />
<span id="email"><code>&lt;<a href="mailto:chriscool@tuxfamily.org">chriscool@tuxfamily.org</a>&gt;</code></span><br />
-<span id="revdate">2023-11-02</span>
+<span id="revdate">2023-11-08</span>
</div>
<div id="content">
<div class="sect1">
diff --git a/git-merge-file.html b/git-merge-file.html
index 9880a987c..eb821bc5d 100644
--- a/git-merge-file.html
+++ b/git-merge-file.html
@@ -751,7 +751,7 @@ git-merge-file(1) Manual Page
<div class="verseblock">
<pre class="content"><em>git merge-file</em> [-L &lt;current-name&gt; [-L &lt;base-name&gt; [-L &lt;other-name&gt;]]]
[--ours|--theirs|--union] [-p|--stdout] [-q|--quiet] [--marker-size=&lt;n&gt;]
- [--[no-]diff3] &lt;current-file&gt; &lt;base-file&gt; &lt;other-file&gt;</pre>
+ [--[no-]diff3] [--object-id] &lt;current&gt; &lt;base&gt; &lt;other&gt;</pre>
<div class="attribution">
</div></div>
</div>
@@ -759,13 +759,14 @@ git-merge-file(1) Manual Page
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
-<div class="paragraph"><p><em>git merge-file</em> incorporates all changes that lead from the <code>&lt;base-file&gt;</code>
-to <code>&lt;other-file&gt;</code> into <code>&lt;current-file&gt;</code>. The result ordinarily goes into
-<code>&lt;current-file&gt;</code>. <em>git merge-file</em> is useful for combining separate changes
-to an original. Suppose <code>&lt;base-file&gt;</code> is the original, and both
-<code>&lt;current-file&gt;</code> and <code>&lt;other-file&gt;</code> are modifications of <code>&lt;base-file&gt;</code>,
+<div class="paragraph"><p>Given three files <code>&lt;current&gt;</code>, <code>&lt;base&gt;</code> and <code>&lt;other&gt;</code>,
+<em>git merge-file</em> incorporates all changes that lead from <code>&lt;base&gt;</code>
+to <code>&lt;other&gt;</code> into <code>&lt;current&gt;</code>. The result ordinarily goes into
+<code>&lt;current&gt;</code>. <em>git merge-file</em> is useful for combining separate changes
+to an original. Suppose <code>&lt;base&gt;</code> is the original, and both
+<code>&lt;current&gt;</code> and <code>&lt;other&gt;</code> are modifications of <code>&lt;base&gt;</code>,
then <em>git merge-file</em> combines both changes.</p></div>
-<div class="paragraph"><p>A conflict occurs if both <code>&lt;current-file&gt;</code> and <code>&lt;other-file&gt;</code> have changes
+<div class="paragraph"><p>A conflict occurs if both <code>&lt;current&gt;</code> and <code>&lt;other&gt;</code> have changes
in a common segment of lines. If a conflict is found, <em>git merge-file</em>
normally outputs a warning and brackets the conflict with lines containing
&lt;&lt;&lt;&lt;&lt;&lt;&lt; and &gt;&gt;&gt;&gt;&gt;&gt;&gt; markers. A typical conflict will look like this:</p></div>
@@ -779,9 +780,12 @@ lines in file B
</div></div>
<div class="paragraph"><p>If there are conflicts, the user should edit the result and delete one of
the alternatives. When <code>--ours</code>, <code>--theirs</code>, or <code>--union</code> option is in effect,
-however, these conflicts are resolved favouring lines from <code>&lt;current-file&gt;</code>,
-lines from <code>&lt;other-file&gt;</code>, or lines from both respectively. The length of the
+however, these conflicts are resolved favouring lines from <code>&lt;current&gt;</code>,
+lines from <code>&lt;other&gt;</code>, or lines from both respectively. The length of the
conflict markers can be given with the <code>--marker-size</code> option.</p></div>
+<div class="paragraph"><p>If <code>--object-id</code> is specified, exactly the same behavior occurs, except that
+instead of specifying what to merge as files, it is specified as a list of
+object IDs referring to blobs.</p></div>
<div class="paragraph"><p>The exit value of this program is negative on error, and the number of
conflicts otherwise (truncated to 127 if there are more than that many
conflicts). If the merge was clean, the exit value is 0.</p></div>
@@ -795,6 +799,18 @@ implements all of RCS <em>merge</em>'s functionality which is needed by
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
+--object-id
+</dt>
+<dd>
+<p>
+ Specify the contents to merge as blobs in the current repository instead of
+ files. In this case, the operation must take place within a valid repository.
+</p>
+<div class="paragraph"><p>If the <code>-p</code> option is specified, the merged file (including conflicts, if any)
+goes to standard output as normal; otherwise, the merged file is written to the
+object store and the object ID of its blob is written to standard output.</p></div>
+</dd>
+<dt class="hdlist1">
-L &lt;label&gt;
</dt>
<dd>
@@ -813,7 +829,7 @@ implements all of RCS <em>merge</em>'s functionality which is needed by
<dd>
<p>
Send results to standard output instead of overwriting
- <code>&lt;current-file&gt;</code>.
+ <code>&lt;current&gt;</code>.
</p>
</dd>
<dt class="hdlist1">
@@ -880,6 +896,15 @@ implements all of RCS <em>merge</em>'s functionality which is needed by
<code>a</code> and <code>c</code> instead of <code>tmp/a123</code> and <code>tmp/c345</code>.
</p>
</dd>
+<dt class="hdlist1">
+<code>git merge-file -p --object-id abc1234 def567 890abcd</code>
+</dt>
+<dd>
+<p>
+ combines the changes of the blob abc1234 and 890abcd since def567,
+ tries to merge them and writes the result to standard output
+</p>
+</dd>
</dl></div>
</div>
</div>
@@ -894,7 +919,7 @@ implements all of RCS <em>merge</em>'s functionality which is needed by
<div id="footer">
<div id="footer-text">
Last updated
- 2021-12-16 05:58:55 JST
+ 2023-11-09 02:04:31 JST
</div>
</div>
</body>
diff --git a/git-merge-file.txt b/git-merge-file.txt
index 7e9093fab..6a081eacb 100644
--- a/git-merge-file.txt
+++ b/git-merge-file.txt
@@ -11,19 +11,20 @@ SYNOPSIS
[verse]
'git merge-file' [-L <current-name> [-L <base-name> [-L <other-name>]]]
[--ours|--theirs|--union] [-p|--stdout] [-q|--quiet] [--marker-size=<n>]
- [--[no-]diff3] <current-file> <base-file> <other-file>
+ [--[no-]diff3] [--object-id] <current> <base> <other>
DESCRIPTION
-----------
-'git merge-file' incorporates all changes that lead from the `<base-file>`
-to `<other-file>` into `<current-file>`. The result ordinarily goes into
-`<current-file>`. 'git merge-file' is useful for combining separate changes
-to an original. Suppose `<base-file>` is the original, and both
-`<current-file>` and `<other-file>` are modifications of `<base-file>`,
+Given three files `<current>`, `<base>` and `<other>`,
+'git merge-file' incorporates all changes that lead from `<base>`
+to `<other>` into `<current>`. The result ordinarily goes into
+`<current>`. 'git merge-file' is useful for combining separate changes
+to an original. Suppose `<base>` is the original, and both
+`<current>` and `<other>` are modifications of `<base>`,
then 'git merge-file' combines both changes.
-A conflict occurs if both `<current-file>` and `<other-file>` have changes
+A conflict occurs if both `<current>` and `<other>` have changes
in a common segment of lines. If a conflict is found, 'git merge-file'
normally outputs a warning and brackets the conflict with lines containing
<<<<<<< and >>>>>>> markers. A typical conflict will look like this:
@@ -36,10 +37,14 @@ normally outputs a warning and brackets the conflict with lines containing
If there are conflicts, the user should edit the result and delete one of
the alternatives. When `--ours`, `--theirs`, or `--union` option is in effect,
-however, these conflicts are resolved favouring lines from `<current-file>`,
-lines from `<other-file>`, or lines from both respectively. The length of the
+however, these conflicts are resolved favouring lines from `<current>`,
+lines from `<other>`, or lines from both respectively. The length of the
conflict markers can be given with the `--marker-size` option.
+If `--object-id` is specified, exactly the same behavior occurs, except that
+instead of specifying what to merge as files, it is specified as a list of
+object IDs referring to blobs.
+
The exit value of this program is negative on error, and the number of
conflicts otherwise (truncated to 127 if there are more than that many
conflicts). If the merge was clean, the exit value is 0.
@@ -52,6 +57,14 @@ linkgit:git[1].
OPTIONS
-------
+--object-id::
+ Specify the contents to merge as blobs in the current repository instead of
+ files. In this case, the operation must take place within a valid repository.
++
+If the `-p` option is specified, the merged file (including conflicts, if any)
+goes to standard output as normal; otherwise, the merged file is written to the
+object store and the object ID of its blob is written to standard output.
+
-L <label>::
This option may be given up to three times, and
specifies labels to be used in place of the
@@ -62,7 +75,7 @@ OPTIONS
-p::
Send results to standard output instead of overwriting
- `<current-file>`.
+ `<current>`.
-q::
Quiet; do not warn about conflicts.
@@ -93,6 +106,11 @@ EXAMPLES
merges tmp/a123 and tmp/c345 with the base tmp/b234, but uses labels
`a` and `c` instead of `tmp/a123` and `tmp/c345`.
+`git merge-file -p --object-id abc1234 def567 890abcd`::
+
+ combines the changes of the blob abc1234 and 890abcd since def567,
+ tries to merge them and writes the result to standard output
+
GIT
---
Part of the linkgit:git[1] suite
diff --git a/git-remote-helpers.html b/git-remote-helpers.html
index 190009983..e6360a0e6 100644
--- a/git-remote-helpers.html
+++ b/git-remote-helpers.html
@@ -735,7 +735,7 @@ asciidoc.install();
<body class="article">
<div id="header">
<h1>git-remote-helpers</h1>
-<span id="revdate">2023-11-03</span>
+<span id="revdate">2023-11-08</span>
</div>
<div id="content">
<div id="preamble">
diff --git a/git-show-ref.html b/git-show-ref.html
index 821b2e20f..d66f9c56a 100644
--- a/git-show-ref.html
+++ b/git-show-ref.html
@@ -749,10 +749,14 @@ git-show-ref(1) Manual Page
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
-<pre class="content"><em>git show-ref</em> [-q | --quiet] [--verify] [--head] [-d | --dereference]
+<pre class="content"><em>git show-ref</em> [--head] [-d | --dereference]
[-s | --hash[=&lt;n&gt;]] [--abbrev[=&lt;n&gt;]] [--tags]
[--heads] [--] [&lt;pattern&gt;&#8230;]
-<em>git show-ref</em> --exclude-existing[=&lt;pattern&gt;]</pre>
+<em>git show-ref</em> --verify [-q | --quiet] [-d | --dereference]
+ [-s | --hash[=&lt;n&gt;]] [--abbrev[=&lt;n&gt;]]
+ [--] [&lt;ref&gt;&#8230;]
+<em>git show-ref</em> --exclude-existing[=&lt;pattern&gt;]
+<em>git show-ref</em> --exists &lt;ref&gt;</pre>
<div class="attribution">
</div></div>
</div>
@@ -768,6 +772,9 @@ particular ref exists.</p></div>
<div class="paragraph"><p>The <code>--exclude-existing</code> form is a filter that does the inverse. It reads
refs from stdin, one ref per line, and shows those that don&#8217;t exist in
the local repository.</p></div>
+<div class="paragraph"><p>The <code>--exists</code> form can be used to check for the existence of a single
+references. This form does not verify whether the reference resolves to an
+actual object.</p></div>
<div class="paragraph"><p>Use of this utility is encouraged in favor of directly accessing files under
the <code>.git</code> directory.</p></div>
</div>
@@ -832,6 +839,16 @@ the <code>.git</code> directory.</p></div>
</p>
</dd>
<dt class="hdlist1">
+--exists
+</dt>
+<dd>
+<p>
+ Check whether the given reference exists. Returns an exit code of 0 if
+ it does, 2 if it is missing, and 1 in case looking up the reference
+ failed with an error other than the reference being missing.
+</p>
+</dd>
+<dt class="hdlist1">
--abbrev[=&lt;n&gt;]
</dt>
<dd>
@@ -848,8 +865,8 @@ the <code>.git</code> directory.</p></div>
</dt>
<dd>
<p>
- Do not print any results to stdout. When combined with <code>--verify</code>, this
- can be used to silently check if a reference exists.
+ Do not print any results to stdout. Can be used with <code>--verify</code> to
+ silently check if a reference exists.
</p>
</dd>
<dt class="hdlist1">
@@ -987,7 +1004,7 @@ flag, so you can do</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2023-10-24 06:43:46 JST
+ 2023-11-09 02:04:31 JST
</div>
</div>
</body>
diff --git a/git-show-ref.txt b/git-show-ref.txt
index 36e81b9de..ba7574700 100644
--- a/git-show-ref.txt
+++ b/git-show-ref.txt
@@ -8,10 +8,14 @@ git-show-ref - List references in a local repository
SYNOPSIS
--------
[verse]
-'git show-ref' [-q | --quiet] [--verify] [--head] [-d | --dereference]
+'git show-ref' [--head] [-d | --dereference]
[-s | --hash[=<n>]] [--abbrev[=<n>]] [--tags]
[--heads] [--] [<pattern>...]
+'git show-ref' --verify [-q | --quiet] [-d | --dereference]
+ [-s | --hash[=<n>]] [--abbrev[=<n>]]
+ [--] [<ref>...]
'git show-ref' --exclude-existing[=<pattern>]
+'git show-ref' --exists <ref>
DESCRIPTION
-----------
@@ -27,6 +31,10 @@ The `--exclude-existing` form is a filter that does the inverse. It reads
refs from stdin, one ref per line, and shows those that don't exist in
the local repository.
+The `--exists` form can be used to check for the existence of a single
+references. This form does not verify whether the reference resolves to an
+actual object.
+
Use of this utility is encouraged in favor of directly accessing files under
the `.git` directory.
@@ -62,6 +70,12 @@ OPTIONS
Aside from returning an error code of 1, it will also print an error
message if `--quiet` was not specified.
+--exists::
+
+ Check whether the given reference exists. Returns an exit code of 0 if
+ it does, 2 if it is missing, and 1 in case looking up the reference
+ failed with an error other than the reference being missing.
+
--abbrev[=<n>]::
Abbreviate the object name. When using `--hash`, you do
@@ -70,8 +84,8 @@ OPTIONS
-q::
--quiet::
- Do not print any results to stdout. When combined with `--verify`, this
- can be used to silently check if a reference exists.
+ Do not print any results to stdout. Can be used with `--verify` to
+ silently check if a reference exists.
--exclude-existing[=<pattern>]::
diff --git a/git-tools.html b/git-tools.html
index 59c1e0e16..3954257ca 100644
--- a/git-tools.html
+++ b/git-tools.html
@@ -735,7 +735,7 @@ asciidoc.install();
<body class="article">
<div id="header">
<h1>Git Tools</h1>
-<span id="revdate">2023-11-02</span>
+<span id="revdate">2023-11-08</span>
</div>
<div id="content">
<div id="preamble">
diff --git a/git.html b/git.html
index c5ab9c4ec..2d01f0559 100644
--- a/git.html
+++ b/git.html
@@ -3601,6 +3601,20 @@ for full details.</p></div>
</p>
</dd>
<dt class="hdlist1">
+<code>GIT_COMMIT_GRAPH_PARANOIA</code>
+</dt>
+<dd>
+<p>
+ When loading a commit object from the commit-graph, Git performs an
+ existence check on the object in the object database. This is done to
+ avoid issues with stale commit-graphs that contain references to
+ already-deleted commits, but comes with a performance penalty.
+</p>
+<div class="paragraph"><p>The default is "true", which enables the aforementioned behavior.
+Setting this to "false" disables the existence check. This can lead to
+a performance improvement at the cost of consistency.</p></div>
+</dd>
+<dt class="hdlist1">
<code>GIT_ALLOW_PROTOCOL</code>
</dt>
<dd>
@@ -3814,7 +3828,7 @@ the Git Security mailing list &lt;<a href="mailto:git-security@googlegroups.com"
<div id="footer">
<div id="footer-text">
Last updated
- 2023-10-30 08:42:00 JST
+ 2023-11-09 02:04:31 JST
</div>
</div>
</body>
diff --git a/git.txt b/git.txt
index 9aeabde26..2535a3019 100644
--- a/git.txt
+++ b/git.txt
@@ -911,6 +911,16 @@ for full details.
should not normally need to set this to `0`, but it may be
useful when trying to salvage data from a corrupted repository.
+`GIT_COMMIT_GRAPH_PARANOIA`::
+ When loading a commit object from the commit-graph, Git performs an
+ existence check on the object in the object database. This is done to
+ avoid issues with stale commit-graphs that contain references to
+ already-deleted commits, but comes with a performance penalty.
++
+The default is "true", which enables the aforementioned behavior.
+Setting this to "false" disables the existence check. This can lead to
+a performance improvement at the cost of consistency.
+
`GIT_ALLOW_PROTOCOL`::
If set to a colon-separated list of protocols, behave as if
`protocol.allow` is set to `never`, and each of the listed
diff --git a/gitformat-pack.html b/gitformat-pack.html
index f17504b4f..3f3030951 100644
--- a/gitformat-pack.html
+++ b/gitformat-pack.html
@@ -1305,10 +1305,11 @@ otherwise specified.</code></pre>
<div class="literalblock">
<div class="content">
<pre><code>Packfile Names (ID: {'P', 'N', 'A', 'M'})
- Stores the packfile names as concatenated, null-terminated strings.
- Packfiles must be listed in lexicographic order for fast lookups by
- name. This is the only chunk not guaranteed to be a multiple of four
- bytes in length, so should be the last chunk for alignment reasons.</code></pre>
+ Store the names of packfiles as a sequence of NUL-terminated
+ strings. There is no extra padding between the filenames,
+ and they are listed in lexicographic order. The chunk itself
+ is padded at the end with between 0 and 3 NUL bytes to make the
+ chunk size a multiple of 4 bytes.</code></pre>
</div></div>
<div class="literalblock">
<div class="content">
@@ -1552,7 +1553,7 @@ support for optional chunks of data, it may make sense to consolidate the
<div id="footer">
<div id="footer-text">
Last updated
- 2023-10-24 06:43:46 JST
+ 2023-11-09 02:04:31 JST
</div>
</div>
</body>
diff --git a/gitformat-pack.txt b/gitformat-pack.txt
index 4a4d87e7d..9fcb29a9c 100644
--- a/gitformat-pack.txt
+++ b/gitformat-pack.txt
@@ -390,10 +390,11 @@ CHUNK LOOKUP:
CHUNK DATA:
Packfile Names (ID: {'P', 'N', 'A', 'M'})
- Stores the packfile names as concatenated, null-terminated strings.
- Packfiles must be listed in lexicographic order for fast lookups by
- name. This is the only chunk not guaranteed to be a multiple of four
- bytes in length, so should be the last chunk for alignment reasons.
+ Store the names of packfiles as a sequence of NUL-terminated
+ strings. There is no extra padding between the filenames,
+ and they are listed in lexicographic order. The chunk itself
+ is padded at the end with between 0 and 3 NUL bytes to make the
+ chunk size a multiple of 4 bytes.
OID Fanout (ID: {'O', 'I', 'D', 'F'})
The ith entry, F[i], stores the number of OIDs with first
diff --git a/howto-index.html b/howto-index.html
index ba777206b..c9b49106a 100644
--- a/howto-index.html
+++ b/howto-index.html
@@ -735,7 +735,7 @@ asciidoc.install();
<body class="article">
<div id="header">
<h1>Git Howto Index</h1>
-<span id="revdate">2023-11-02</span>
+<span id="revdate">2023-11-08</span>
</div>
<div id="content">
<div id="preamble">
@@ -896,7 +896,7 @@ later validate it.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2023-11-03 09:40:09 JST
+ 2023-11-09 02:04:34 JST
</div>
</div>
</body>
diff --git a/howto/coordinate-embargoed-releases.html b/howto/coordinate-embargoed-releases.html
index 2f027bb2a..de4db71f4 100644
--- a/howto/coordinate-embargoed-releases.html
+++ b/howto/coordinate-embargoed-releases.html
@@ -1038,7 +1038,7 @@ Thanks,
<div id="footer">
<div id="footer-text">
Last updated
- 2023-11-07 12:13:32 JST
+ 2023-11-09 02:04:36 JST
</div>
</div>
</body>
diff --git a/howto/keep-canonical-history-correct.html b/howto/keep-canonical-history-correct.html
index 92e532765..a21c7d27c 100644
--- a/howto/keep-canonical-history-correct.html
+++ b/howto/keep-canonical-history-correct.html
@@ -735,7 +735,7 @@ asciidoc.install();
<body class="article">
<div id="header">
<h1>Keep authoritative canonical history correct with git pull</h1>
-<span id="revdate">2023-11-03</span>
+<span id="revdate">2023-11-08</span>
</div>
<div id="content">
<div id="preamble">
@@ -939,7 +939,7 @@ tip of your <em>master</em> again and redo the two merges:</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2023-11-07 12:13:32 JST
+ 2023-11-09 02:04:36 JST
</div>
</div>
</body>
diff --git a/howto/maintain-git.html b/howto/maintain-git.html
index 16deb5aac..fd572273e 100644
--- a/howto/maintain-git.html
+++ b/howto/maintain-git.html
@@ -735,7 +735,7 @@ asciidoc.install();
<body class="article">
<div id="header">
<h1>How to maintain Git</h1>
-<span id="revdate">2023-11-03</span>
+<span id="revdate">2023-11-08</span>
</div>
<div id="content">
<div class="sect1">
@@ -1479,7 +1479,7 @@ $ git update-ref -d $mf/ai/topic</code></pre>
<div id="footer">
<div id="footer-text">
Last updated
- 2023-11-07 12:13:32 JST
+ 2023-11-09 02:04:36 JST
</div>
</div>
</body>
diff --git a/howto/new-command.html b/howto/new-command.html
index 6f2cb22c3..71244147e 100644
--- a/howto/new-command.html
+++ b/howto/new-command.html
@@ -735,7 +735,7 @@ asciidoc.install();
<body class="article">
<div id="header">
<h1>How to integrate new subcommands</h1>
-<span id="revdate">2023-11-03</span>
+<span id="revdate">2023-11-08</span>
</div>
<div id="content">
<div id="preamble">
@@ -864,7 +864,7 @@ letter [PATCH 0/n].
<div id="footer">
<div id="footer-text">
Last updated
- 2023-11-07 12:13:30 JST
+ 2023-11-09 02:04:35 JST
</div>
</div>
</body>
diff --git a/howto/rebase-from-internal-branch.html b/howto/rebase-from-internal-branch.html
index bbcb9c60a..0d3b643b1 100644
--- a/howto/rebase-from-internal-branch.html
+++ b/howto/rebase-from-internal-branch.html
@@ -735,7 +735,7 @@ asciidoc.install();
<body class="article">
<div id="header">
<h1>How to rebase from an internal branch</h1>
-<span id="revdate">2023-11-03</span>
+<span id="revdate">2023-11-08</span>
</div>
<div id="content">
<div id="preamble">
@@ -896,7 +896,7 @@ the #1' commit.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2023-11-07 12:13:32 JST
+ 2023-11-09 02:04:36 JST
</div>
</div>
</body>
diff --git a/howto/rebuild-from-update-hook.html b/howto/rebuild-from-update-hook.html
index a3d8b594e..1b8b85366 100644
--- a/howto/rebuild-from-update-hook.html
+++ b/howto/rebuild-from-update-hook.html
@@ -735,7 +735,7 @@ asciidoc.install();
<body class="article">
<div id="header">
<h1>How to rebuild from update hook</h1>
-<span id="revdate">2023-11-03</span>
+<span id="revdate">2023-11-08</span>
</div>
<div id="content">
<div id="preamble">
@@ -848,7 +848,7 @@ This is still crude and does not protect against simultaneous
<div id="footer">
<div id="footer-text">
Last updated
- 2023-11-07 12:13:31 JST
+ 2023-11-09 02:04:36 JST
</div>
</div>
</body>
diff --git a/howto/recover-corrupted-blob-object.html b/howto/recover-corrupted-blob-object.html
index f2c4c154b..bf1787ea2 100644
--- a/howto/recover-corrupted-blob-object.html
+++ b/howto/recover-corrupted-blob-object.html
@@ -735,7 +735,7 @@ asciidoc.install();
<body class="article">
<div id="header">
<h1>How to recover a corrupted blob object</h1>
-<span id="revdate">2023-11-03</span>
+<span id="revdate">2023-11-08</span>
</div>
<div id="content">
<div id="preamble">
@@ -881,7 +881,7 @@ thing.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2023-11-07 12:13:31 JST
+ 2023-11-09 02:04:36 JST
</div>
</div>
</body>
diff --git a/howto/recover-corrupted-object-harder.html b/howto/recover-corrupted-object-harder.html
index f434acc8c..fbd89d37d 100644
--- a/howto/recover-corrupted-object-harder.html
+++ b/howto/recover-corrupted-object-harder.html
@@ -735,7 +735,7 @@ asciidoc.install();
<body class="article">
<div id="header">
<h1>How to recover an object from scratch</h1>
-<span id="revdate">2023-11-03</span>
+<span id="revdate">2023-11-08</span>
</div>
<div id="content">
<div id="preamble">
@@ -1190,7 +1190,7 @@ int main(int argc, char **argv)
<div id="footer">
<div id="footer-text">
Last updated
- 2023-11-07 12:13:31 JST
+ 2023-11-09 02:04:36 JST
</div>
</div>
</body>
diff --git a/howto/revert-a-faulty-merge.html b/howto/revert-a-faulty-merge.html
index c4644ace8..fd146f02b 100644
--- a/howto/revert-a-faulty-merge.html
+++ b/howto/revert-a-faulty-merge.html
@@ -735,7 +735,7 @@ asciidoc.install();
<body class="article">
<div id="header">
<h1>How to revert a faulty merge</h1>
-<span id="revdate">2023-11-03</span>
+<span id="revdate">2023-11-08</span>
</div>
<div id="content">
<div id="preamble">
@@ -1026,7 +1026,7 @@ P---o---o---M---x---x---W---x---M2
<div id="footer">
<div id="footer-text">
Last updated
- 2023-11-07 12:13:31 JST
+ 2023-11-09 02:04:36 JST
</div>
</div>
</body>
diff --git a/howto/revert-branch-rebase.html b/howto/revert-branch-rebase.html
index 9976e4374..499005a9d 100644
--- a/howto/revert-branch-rebase.html
+++ b/howto/revert-branch-rebase.html
@@ -735,7 +735,7 @@ asciidoc.install();
<body class="article">
<div id="header">
<h1>How to revert an existing commit</h1>
-<span id="revdate">2023-11-03</span>
+<span id="revdate">2023-11-08</span>
</div>
<div id="content">
<div id="preamble">
@@ -908,7 +908,7 @@ Committed merge 7fb9b7262a1d1e0a47bbfdcbbcf50ce0635d3f8f
<div id="footer">
<div id="footer-text">
Last updated
- 2023-11-07 12:13:30 JST
+ 2023-11-09 02:04:35 JST
</div>
</div>
</body>
diff --git a/howto/separating-topic-branches.html b/howto/separating-topic-branches.html
index 9474db51a..213f8d9f2 100644
--- a/howto/separating-topic-branches.html
+++ b/howto/separating-topic-branches.html
@@ -735,7 +735,7 @@ asciidoc.install();
<body class="article">
<div id="header">
<h1>How to separate topic branches</h1>
-<span id="revdate">2023-11-03</span>
+<span id="revdate">2023-11-08</span>
</div>
<div id="content">
<div id="preamble">
@@ -842,7 +842,7 @@ o---o"master"</code></pre>
<div id="footer">
<div id="footer-text">
Last updated
- 2023-11-07 12:13:31 JST
+ 2023-11-09 02:04:36 JST
</div>
</div>
</body>
diff --git a/howto/setup-git-server-over-http.html b/howto/setup-git-server-over-http.html
index c94d522ae..aa212e649 100644
--- a/howto/setup-git-server-over-http.html
+++ b/howto/setup-git-server-over-http.html
@@ -735,7 +735,7 @@ asciidoc.install();
<body class="article">
<div id="header">
<h1>How to setup Git server over http</h1>
-<span id="revdate">2023-11-03</span>
+<span id="revdate">2023-11-08</span>
</div>
<div id="content">
<div id="preamble">
@@ -1072,7 +1072,7 @@ help diagnosing the problem, but removes security checks.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2023-11-07 12:13:31 JST
+ 2023-11-09 02:04:36 JST
</div>
</div>
</body>
diff --git a/howto/update-hook-example.html b/howto/update-hook-example.html
index 4aaad92c8..36f400eef 100644
--- a/howto/update-hook-example.html
+++ b/howto/update-hook-example.html
@@ -735,7 +735,7 @@ asciidoc.install();
<body class="article">
<div id="header">
<h1>How to use the update hook</h1>
-<span id="revdate">2023-11-03</span>
+<span id="revdate">2023-11-08</span>
</div>
<div id="content">
<div id="preamble">
@@ -931,7 +931,7 @@ that JC can make non-fast-forward pushes on it.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2023-11-07 12:13:31 JST
+ 2023-11-09 02:04:35 JST
</div>
</div>
</body>
diff --git a/howto/use-git-daemon.html b/howto/use-git-daemon.html
index 3ea14e91f..507bbe5b0 100644
--- a/howto/use-git-daemon.html
+++ b/howto/use-git-daemon.html
@@ -735,7 +735,7 @@ asciidoc.install();
<body class="article">
<div id="header">
<h1>How to use git-daemon</h1>
-<span id="revdate">2023-11-03</span>
+<span id="revdate">2023-11-08</span>
</div>
<div id="content">
<div id="preamble">
@@ -792,7 +792,7 @@ a good practice to put the paths after a "--" separator.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2023-11-07 12:13:31 JST
+ 2023-11-09 02:04:35 JST
</div>
</div>
</body>
diff --git a/howto/using-merge-subtree.html b/howto/using-merge-subtree.html
index 3bc67a3e7..3ad8976b8 100644
--- a/howto/using-merge-subtree.html
+++ b/howto/using-merge-subtree.html
@@ -735,7 +735,7 @@ asciidoc.install();
<body class="article">
<div id="header">
<h1>How to use the subtree merge strategy</h1>
-<span id="revdate">2023-11-03</span>
+<span id="revdate">2023-11-08</span>
</div>
<div id="content">
<div id="preamble">
@@ -849,7 +849,7 @@ Please note that if the other project merges from you, then it will
<div id="footer">
<div id="footer-text">
Last updated
- 2023-11-07 12:13:30 JST
+ 2023-11-09 02:04:35 JST
</div>
</div>
</body>
diff --git a/howto/using-signed-tag-in-pull-request.html b/howto/using-signed-tag-in-pull-request.html
index 18c89c262..bb7834337 100644
--- a/howto/using-signed-tag-in-pull-request.html
+++ b/howto/using-signed-tag-in-pull-request.html
@@ -735,7 +735,7 @@ asciidoc.install();
<body class="article">
<div id="header">
<h1>How to use a signed tag in pull requests</h1>
-<span id="revdate">2023-11-03</span>
+<span id="revdate">2023-11-08</span>
</div>
<div id="content">
<div id="preamble">
@@ -953,7 +953,7 @@ as part of the merge commit.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2023-11-07 12:13:31 JST
+ 2023-11-09 02:04:35 JST
</div>
</div>
</body>
diff --git a/technical/api-error-handling.html b/technical/api-error-handling.html
index 087b9c075..ae9ed47fd 100644
--- a/technical/api-error-handling.html
+++ b/technical/api-error-handling.html
@@ -735,7 +735,7 @@ asciidoc.install();
<body class="article">
<div id="header">
<h1>Error reporting in git</h1>
-<span id="revdate">2023-11-03</span>
+<span id="revdate">2023-11-08</span>
</div>
<div id="content">
<div id="preamble">
diff --git a/technical/api-index.html b/technical/api-index.html
index b3532390b..08509a584 100644
--- a/technical/api-index.html
+++ b/technical/api-index.html
@@ -735,7 +735,7 @@ asciidoc.install();
<body class="article">
<div id="header">
<h1>Git API Documents</h1>
-<span id="revdate">2023-11-03</span>
+<span id="revdate">2023-11-08</span>
</div>
<div id="content">
<div id="preamble">
@@ -776,7 +776,7 @@ documents them.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2023-11-03 09:40:13 JST
+ 2023-11-09 02:04:38 JST
</div>
</div>
</body>
diff --git a/technical/api-merge.html b/technical/api-merge.html
index dd5f2d7ab..9df00a619 100644
--- a/technical/api-merge.html
+++ b/technical/api-merge.html
@@ -735,7 +735,7 @@ asciidoc.install();
<body class="article">
<div id="header">
<h1>merge API</h1>
-<span id="revdate">2023-11-03</span>
+<span id="revdate">2023-11-08</span>
</div>
<div id="content">
<div id="preamble">
diff --git a/technical/api-parse-options.html b/technical/api-parse-options.html
index 77e2432b9..565addbfd 100644
--- a/technical/api-parse-options.html
+++ b/technical/api-parse-options.html
@@ -735,7 +735,7 @@ asciidoc.install();
<body class="article">
<div id="header">
<h1>parse-options API</h1>
-<span id="revdate">2023-11-03</span>
+<span id="revdate">2023-11-08</span>
</div>
<div id="content">
<div id="preamble">
diff --git a/technical/api-simple-ipc.html b/technical/api-simple-ipc.html
index 4fbc49b28..e2713d986 100644
--- a/technical/api-simple-ipc.html
+++ b/technical/api-simple-ipc.html
@@ -735,7 +735,7 @@ asciidoc.install();
<body class="article">
<div id="header">
<h1>Simple-IPC API</h1>
-<span id="revdate">2023-11-03</span>
+<span id="revdate">2023-11-08</span>
</div>
<div id="content">
<div id="preamble">
diff --git a/technical/api-trace2.html b/technical/api-trace2.html
index d9455e4bb..0c2ccd6d3 100644
--- a/technical/api-trace2.html
+++ b/technical/api-trace2.html
@@ -735,7 +735,7 @@ asciidoc.install();
<body class="article">
<div id="header">
<h1>Trace2 API</h1>
-<span id="revdate">2023-11-03</span>
+<span id="revdate">2023-11-08</span>
</div>
<div id="content">
<div id="preamble">
diff --git a/technical/bitmap-format.html b/technical/bitmap-format.html
index 1670eba4d..420e989d0 100644
--- a/technical/bitmap-format.html
+++ b/technical/bitmap-format.html
@@ -735,7 +735,7 @@ asciidoc.install();
<body class="article">
<div id="header">
<h1>GIT bitmap v1 format</h1>
-<span id="revdate">2023-11-03</span>
+<span id="revdate">2023-11-08</span>
</div>
<div id="content">
<div class="sect1">
diff --git a/technical/bundle-uri.html b/technical/bundle-uri.html
index aafb99468..6532441c3 100644
--- a/technical/bundle-uri.html
+++ b/technical/bundle-uri.html
@@ -735,7 +735,7 @@ asciidoc.install();
<body class="article">
<div id="header">
<h1>Bundle URIs</h1>
-<span id="revdate">2023-11-03</span>
+<span id="revdate">2023-11-08</span>
</div>
<div id="content">
<div id="preamble">
diff --git a/technical/hash-function-transition.html b/technical/hash-function-transition.html
index 435defd27..6cf033bd5 100644
--- a/technical/hash-function-transition.html
+++ b/technical/hash-function-transition.html
@@ -735,7 +735,7 @@ asciidoc.install();
<body class="article">
<div id="header">
<h1>Git hash function transition</h1>
-<span id="revdate">2023-11-03</span>
+<span id="revdate">2023-11-08</span>
</div>
<div id="content">
<div class="sect1">
diff --git a/technical/long-running-process-protocol.html b/technical/long-running-process-protocol.html
index 1ca6b8167..1c3b81dc8 100644
--- a/technical/long-running-process-protocol.html
+++ b/technical/long-running-process-protocol.html
@@ -735,7 +735,7 @@ asciidoc.install();
<body class="article">
<div id="header">
<h1>Long-running process protocol</h1>
-<span id="revdate">2023-11-03</span>
+<span id="revdate">2023-11-08</span>
</div>
<div id="content">
<div id="preamble">
diff --git a/technical/multi-pack-index.html b/technical/multi-pack-index.html
index f5ebc3e6d..460fc056f 100644
--- a/technical/multi-pack-index.html
+++ b/technical/multi-pack-index.html
@@ -735,7 +735,7 @@ asciidoc.install();
<body class="article">
<div id="header">
<h1>Multi-Pack-Index (MIDX) Design Notes</h1>
-<span id="revdate">2023-11-03</span>
+<span id="revdate">2023-11-08</span>
</div>
<div id="content">
<div id="preamble">
diff --git a/technical/pack-heuristics.html b/technical/pack-heuristics.html
index 0d3082cf3..000d773a7 100644
--- a/technical/pack-heuristics.html
+++ b/technical/pack-heuristics.html
@@ -735,7 +735,7 @@ asciidoc.install();
<body class="article">
<div id="header">
<h1>Concerning Git&#8217;s Packing Heuristics</h1>
-<span id="revdate">2023-11-03</span>
+<span id="revdate">2023-11-08</span>
</div>
<div id="content">
<div id="preamble">
diff --git a/technical/parallel-checkout.html b/technical/parallel-checkout.html
index ad37c6041..563fc413a 100644
--- a/technical/parallel-checkout.html
+++ b/technical/parallel-checkout.html
@@ -735,7 +735,7 @@ asciidoc.install();
<body class="article">
<div id="header">
<h1>Parallel Checkout Design Notes</h1>
-<span id="revdate">2023-11-03</span>
+<span id="revdate">2023-11-08</span>
</div>
<div id="content">
<div id="preamble">
diff --git a/technical/partial-clone.html b/technical/partial-clone.html
index 2a2b4d1ef..c9a155698 100644
--- a/technical/partial-clone.html
+++ b/technical/partial-clone.html
@@ -735,7 +735,7 @@ asciidoc.install();
<body class="article">
<div id="header">
<h1>Partial Clone Design Notes</h1>
-<span id="revdate">2023-11-03</span>
+<span id="revdate">2023-11-08</span>
</div>
<div id="content">
<div id="preamble">
diff --git a/technical/racy-git.html b/technical/racy-git.html
index d2922af97..bfd737863 100644
--- a/technical/racy-git.html
+++ b/technical/racy-git.html
@@ -735,7 +735,7 @@ asciidoc.install();
<body class="article">
<div id="header">
<h1>Use of index and Racy Git problem</h1>
-<span id="revdate">2023-11-03</span>
+<span id="revdate">2023-11-08</span>
</div>
<div id="content">
<div class="sect1">
diff --git a/technical/scalar.html b/technical/scalar.html
index 4cd3025bf..f331eb002 100644
--- a/technical/scalar.html
+++ b/technical/scalar.html
@@ -735,7 +735,7 @@ asciidoc.install();
<body class="article">
<div id="header">
<h1>Scalar</h1>
-<span id="revdate">2023-11-03</span>
+<span id="revdate">2023-11-08</span>
</div>
<div id="content">
<div id="preamble">
diff --git a/technical/send-pack-pipeline.html b/technical/send-pack-pipeline.html
index 151ff9807..f1fb3b593 100644
--- a/technical/send-pack-pipeline.html
+++ b/technical/send-pack-pipeline.html
@@ -735,7 +735,7 @@ asciidoc.install();
<body class="article">
<div id="header">
<h1>Git-send-pack internals</h1>
-<span id="revdate">2023-11-03</span>
+<span id="revdate">2023-11-08</span>
</div>
<div id="content">
<div class="sect1">
diff --git a/technical/shallow.html b/technical/shallow.html
index 6722afb51..ef09e863b 100644
--- a/technical/shallow.html
+++ b/technical/shallow.html
@@ -735,7 +735,7 @@ asciidoc.install();
<body class="article">
<div id="header">
<h1>Shallow commits</h1>
-<span id="revdate">2023-11-03</span>
+<span id="revdate">2023-11-08</span>
</div>
<div id="content">
<div id="preamble">
diff --git a/technical/trivial-merge.html b/technical/trivial-merge.html
index 83aaeed0f..55a14cd9f 100644
--- a/technical/trivial-merge.html
+++ b/technical/trivial-merge.html
@@ -735,7 +735,7 @@ asciidoc.install();
<body class="article">
<div id="header">
<h1>Trivial merge rules</h1>
-<span id="revdate">2023-11-03</span>
+<span id="revdate">2023-11-08</span>
</div>
<div id="content">
<div id="preamble">
diff --git a/user-manual.html b/user-manual.html
index e84d922ef..cac95963e 100644
--- a/user-manual.html
+++ b/user-manual.html
@@ -1,5 +1,5 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Git User Manual</title><link rel="stylesheet" type="text/css" href="docbook-xsl.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div lang="en" class="book"><div class="titlepage"><div><div><h1 class="title"><a name="id-1"></a>Git User Manual</h1></div><div><div class="revhistory"><table style="border-style:solid; width:100%;" summary="Revision History"><tr><th align="left" valign="top" colspan="2"><b>Revision History</b></th></tr><tr><td align="left"></td><td align="left">2023-11-03</td></tr></table></div></div></div><hr></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="preface"><a href="#_introduction">Introduction</a></span></dt><dt><span class="chapter"><a href="#repositories-and-branches">1. Repositories and Branches</a></span></dt><dd><dl><dt><span class="section"><a href="#how-to-get-a-git-repository">How to get a Git repository</a></span></dt><dt><span class="section"><a href="#how-to-check-out">How to check out a different version of a project</a></span></dt><dt><span class="section"><a href="#understanding-commits">Understanding History: Commits</a></span></dt><dd><dl><dt><span class="section"><a href="#understanding-reachability">Understanding history: commits, parents, and reachability</a></span></dt><dt><span class="section"><a href="#history-diagrams">Understanding history: History diagrams</a></span></dt><dt><span class="section"><a href="#what-is-a-branch">Understanding history: What is a branch?</a></span></dt></dl></dd><dt><span class="section"><a href="#manipulating-branches">Manipulating branches</a></span></dt><dt><span class="section"><a href="#detached-head">Examining an old version without creating a new branch</a></span></dt><dt><span class="section"><a href="#examining-remote-branches">Examining branches from a remote repository</a></span></dt><dt><span class="section"><a href="#how-git-stores-references">Naming branches, tags, and other references</a></span></dt><dt><span class="section"><a href="#Updating-a-repository-With-git-fetch">Updating a repository with git fetch</a></span></dt><dt><span class="section"><a href="#fetching-branches">Fetching branches from other repositories</a></span></dt></dl></dd><dt><span class="chapter"><a href="#exploring-git-history">2. Exploring Git history</a></span></dt><dd><dl><dt><span class="section"><a href="#using-bisect">How to use bisect to find a regression</a></span></dt><dt><span class="section"><a href="#naming-commits">Naming commits</a></span></dt><dt><span class="section"><a href="#creating-tags">Creating tags</a></span></dt><dt><span class="section"><a href="#browsing-revisions">Browsing revisions</a></span></dt><dt><span class="section"><a href="#generating-diffs">Generating diffs</a></span></dt><dt><span class="section"><a href="#viewing-old-file-versions">Viewing old file versions</a></span></dt><dt><span class="section"><a href="#history-examples">Examples</a></span></dt><dd><dl><dt><span class="section"><a href="#counting-commits-on-a-branch">Counting the number of commits on a branch</a></span></dt><dt><span class="section"><a href="#checking-for-equal-branches">Check whether two branches point at the same history</a></span></dt><dt><span class="section"><a href="#finding-tagged-descendants">Find first tagged version including a given fix</a></span></dt><dt><span class="section"><a href="#showing-commits-unique-to-a-branch">Showing commits unique to a given branch</a></span></dt><dt><span class="section"><a href="#making-a-release">Creating a changelog and tarball for a software release</a></span></dt><dt><span class="section"><a href="#Finding-commits-With-given-Content">Finding commits referencing a file with given content</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="#Developing-With-git">3. Developing with Git</a></span></dt><dd><dl><dt><span class="section"><a href="#telling-git-your-name">Telling Git your name</a></span></dt><dt><span class="section"><a href="#creating-a-new-repository">Creating a new repository</a></span></dt><dt><span class="section"><a href="#how-to-make-a-commit">How to make a commit</a></span></dt><dt><span class="section"><a href="#creating-good-commit-messages">Creating good commit messages</a></span></dt><dt><span class="section"><a href="#ignoring-files">Ignoring files</a></span></dt><dt><span class="section"><a href="#how-to-merge">How to merge</a></span></dt><dt><span class="section"><a href="#resolving-a-merge">Resolving a merge</a></span></dt><dd><dl><dt><span class="section"><a href="#conflict-resolution">Getting conflict-resolution help during a merge</a></span></dt></dl></dd><dt><span class="section"><a href="#undoing-a-merge">Undoing a merge</a></span></dt><dt><span class="section"><a href="#fast-forwards">Fast-forward merges</a></span></dt><dt><span class="section"><a href="#fixing-mistakes">Fixing mistakes</a></span></dt><dd><dl><dt><span class="section"><a href="#reverting-a-commit">Fixing a mistake with a new commit</a></span></dt><dt><span class="section"><a href="#fixing-a-mistake-by-rewriting-history">Fixing a mistake by rewriting history</a></span></dt><dt><span class="section"><a href="#checkout-of-path">Checking out an old version of a file</a></span></dt><dt><span class="section"><a href="#interrupted-work">Temporarily setting aside work in progress</a></span></dt></dl></dd><dt><span class="section"><a href="#ensuring-good-performance">Ensuring good performance</a></span></dt><dt><span class="section"><a href="#ensuring-reliability">Ensuring reliability</a></span></dt><dd><dl><dt><span class="section"><a href="#checking-for-corruption">Checking the repository for corruption</a></span></dt><dt><span class="section"><a href="#recovering-lost-changes">Recovering lost changes</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="#sharing-development">4. Sharing development with others</a></span></dt><dd><dl><dt><span class="section"><a href="#getting-updates-With-git-pull">Getting updates with git pull</a></span></dt><dt><span class="section"><a href="#submitting-patches">Submitting patches to a project</a></span></dt><dt><span class="section"><a href="#importing-patches">Importing patches to a project</a></span></dt><dt><span class="section"><a href="#public-repositories">Public Git repositories</a></span></dt><dd><dl><dt><span class="section"><a href="#setting-up-a-public-repository">Setting up a public repository</a></span></dt><dt><span class="section"><a href="#exporting-via-git">Exporting a Git repository via the Git protocol</a></span></dt><dt><span class="section"><a href="#exporting-via-http">Exporting a git repository via HTTP</a></span></dt><dt><span class="section"><a href="#pushing-changes-to-a-public-repository">Pushing changes to a public repository</a></span></dt><dt><span class="section"><a href="#forcing-push">What to do when a push fails</a></span></dt><dt><span class="section"><a href="#setting-up-a-shared-repository">Setting up a shared repository</a></span></dt><dt><span class="section"><a href="#setting-up-gitweb">Allowing web browsing of a repository</a></span></dt></dl></dd><dt><span class="section"><a href="#how-to-get-a-git-repository-with-minimal-history">How to get a Git repository with minimal history</a></span></dt><dt><span class="section"><a href="#sharing-development-examples">Examples</a></span></dt><dd><dl><dt><span class="section"><a href="#maintaining-topic-branches">Maintaining topic branches for a Linux subsystem maintainer</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="#cleaning-up-history">5. Rewriting history and maintaining patch series</a></span></dt><dd><dl><dt><span class="section"><a href="#patch-series">Creating the perfect patch series</a></span></dt><dt><span class="section"><a href="#using-git-rebase">Keeping a patch series up to date using git rebase</a></span></dt><dt><span class="section"><a href="#rewriting-one-commit">Rewriting a single commit</a></span></dt><dt><span class="section"><a href="#reordering-patch-series">Reordering or selecting from a patch series</a></span></dt><dt><span class="section"><a href="#interactive-rebase">Using interactive rebases</a></span></dt><dt><span class="section"><a href="#patch-series-tools">Other tools</a></span></dt><dt><span class="section"><a href="#problems-With-rewriting-history">Problems with rewriting history</a></span></dt><dt><span class="section"><a href="#bisect-merges">Why bisecting merge commits can be harder than bisecting linear history</a></span></dt></dl></dd><dt><span class="chapter"><a href="#advanced-branch-management">6. Advanced branch management</a></span></dt><dd><dl><dt><span class="section"><a href="#fetching-individual-branches">Fetching individual branches</a></span></dt><dt><span class="section"><a href="#fetch-fast-forwards">git fetch and fast-forwards</a></span></dt><dt><span class="section"><a href="#forcing-fetch">Forcing git fetch to do non-fast-forward updates</a></span></dt><dt><span class="section"><a href="#remote-branch-configuration">Configuring remote-tracking branches</a></span></dt></dl></dd><dt><span class="chapter"><a href="#git-concepts">7. Git concepts</a></span></dt><dd><dl><dt><span class="section"><a href="#the-object-database">The Object Database</a></span></dt><dd><dl><dt><span class="section"><a href="#commit-object">Commit Object</a></span></dt><dt><span class="section"><a href="#tree-object">Tree Object</a></span></dt><dt><span class="section"><a href="#blob-object">Blob Object</a></span></dt><dt><span class="section"><a href="#trust">Trust</a></span></dt><dt><span class="section"><a href="#tag-object">Tag Object</a></span></dt><dt><span class="section"><a href="#pack-files">How Git stores objects efficiently: pack files</a></span></dt><dt><span class="section"><a href="#dangling-objects">Dangling objects</a></span></dt><dt><span class="section"><a href="#recovering-from-repository-corruption">Recovering from repository corruption</a></span></dt></dl></dd><dt><span class="section"><a href="#the-index">The index</a></span></dt></dl></dd><dt><span class="chapter"><a href="#submodules">8. Submodules</a></span></dt><dd><dl><dt><span class="section"><a href="#pitfalls-with-submodules">Pitfalls with submodules</a></span></dt></dl></dd><dt><span class="chapter"><a href="#low-level-operations">9. Low-level Git operations</a></span></dt><dd><dl><dt><span class="section"><a href="#object-manipulation">Object access and manipulation</a></span></dt><dt><span class="section"><a href="#the-workflow">The Workflow</a></span></dt><dd><dl><dt><span class="section"><a href="#working-directory-to-index">working directory → index</a></span></dt><dt><span class="section"><a href="#index-to-object-database">index → object database</a></span></dt><dt><span class="section"><a href="#object-database-to-index">object database → index</a></span></dt><dt><span class="section"><a href="#index-to-working-directory">index → working directory</a></span></dt><dt><span class="section"><a href="#tying-it-all-together">Tying it all together</a></span></dt></dl></dd><dt><span class="section"><a href="#examining-the-data">Examining the data</a></span></dt><dt><span class="section"><a href="#merging-multiple-trees">Merging multiple trees</a></span></dt><dt><span class="section"><a href="#merging-multiple-trees-2">Merging multiple trees, continued</a></span></dt></dl></dd><dt><span class="chapter"><a href="#hacking-git">10. Hacking Git</a></span></dt><dd><dl><dt><span class="section"><a href="#object-details">Object storage format</a></span></dt><dt><span class="section"><a href="#birdview-on-the-source-code">A birds-eye view of Git’s source code</a></span></dt></dl></dd><dt><span class="chapter"><a href="#glossary">11. Git Glossary</a></span></dt><dd><dl><dt><span class="section"><a href="#git-explained">Git explained</a></span></dt></dl></dd><dt><span class="appendix"><a href="#git-quick-start">A. Git Quick Reference</a></span></dt><dd><dl><dt><span class="section"><a href="#quick-creating-a-new-repository">Creating a new repository</a></span></dt><dt><span class="section"><a href="#managing-branches">Managing branches</a></span></dt><dt><span class="section"><a href="#exploring-history">Exploring history</a></span></dt><dt><span class="section"><a href="#making-changes">Making changes</a></span></dt><dt><span class="section"><a href="#merging">Merging</a></span></dt><dt><span class="section"><a href="#sharing-your-changes">Sharing your changes</a></span></dt><dt><span class="section"><a href="#repository-maintenance">Repository maintenance</a></span></dt></dl></dd><dt><span class="appendix"><a href="#todo">B. Notes and todo list for this manual</a></span></dt><dd><dl><dt><span class="section"><a href="#todo-list">Todo list</a></span></dt></dl></dd></dl></div><div class="preface"><div class="titlepage"><div><div><h1 class="title"><a name="_introduction"></a>Introduction</h1></div></div></div><p>Git is a fast distributed revision control system.</p><p>This manual is designed to be readable by someone with basic UNIX
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Git User Manual</title><link rel="stylesheet" type="text/css" href="docbook-xsl.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div lang="en" class="book"><div class="titlepage"><div><div><h1 class="title"><a name="id-1"></a>Git User Manual</h1></div><div><div class="revhistory"><table style="border-style:solid; width:100%;" summary="Revision History"><tr><th align="left" valign="top" colspan="2"><b>Revision History</b></th></tr><tr><td align="left"></td><td align="left">2023-11-08</td></tr></table></div></div></div><hr></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="preface"><a href="#_introduction">Introduction</a></span></dt><dt><span class="chapter"><a href="#repositories-and-branches">1. Repositories and Branches</a></span></dt><dd><dl><dt><span class="section"><a href="#how-to-get-a-git-repository">How to get a Git repository</a></span></dt><dt><span class="section"><a href="#how-to-check-out">How to check out a different version of a project</a></span></dt><dt><span class="section"><a href="#understanding-commits">Understanding History: Commits</a></span></dt><dd><dl><dt><span class="section"><a href="#understanding-reachability">Understanding history: commits, parents, and reachability</a></span></dt><dt><span class="section"><a href="#history-diagrams">Understanding history: History diagrams</a></span></dt><dt><span class="section"><a href="#what-is-a-branch">Understanding history: What is a branch?</a></span></dt></dl></dd><dt><span class="section"><a href="#manipulating-branches">Manipulating branches</a></span></dt><dt><span class="section"><a href="#detached-head">Examining an old version without creating a new branch</a></span></dt><dt><span class="section"><a href="#examining-remote-branches">Examining branches from a remote repository</a></span></dt><dt><span class="section"><a href="#how-git-stores-references">Naming branches, tags, and other references</a></span></dt><dt><span class="section"><a href="#Updating-a-repository-With-git-fetch">Updating a repository with git fetch</a></span></dt><dt><span class="section"><a href="#fetching-branches">Fetching branches from other repositories</a></span></dt></dl></dd><dt><span class="chapter"><a href="#exploring-git-history">2. Exploring Git history</a></span></dt><dd><dl><dt><span class="section"><a href="#using-bisect">How to use bisect to find a regression</a></span></dt><dt><span class="section"><a href="#naming-commits">Naming commits</a></span></dt><dt><span class="section"><a href="#creating-tags">Creating tags</a></span></dt><dt><span class="section"><a href="#browsing-revisions">Browsing revisions</a></span></dt><dt><span class="section"><a href="#generating-diffs">Generating diffs</a></span></dt><dt><span class="section"><a href="#viewing-old-file-versions">Viewing old file versions</a></span></dt><dt><span class="section"><a href="#history-examples">Examples</a></span></dt><dd><dl><dt><span class="section"><a href="#counting-commits-on-a-branch">Counting the number of commits on a branch</a></span></dt><dt><span class="section"><a href="#checking-for-equal-branches">Check whether two branches point at the same history</a></span></dt><dt><span class="section"><a href="#finding-tagged-descendants">Find first tagged version including a given fix</a></span></dt><dt><span class="section"><a href="#showing-commits-unique-to-a-branch">Showing commits unique to a given branch</a></span></dt><dt><span class="section"><a href="#making-a-release">Creating a changelog and tarball for a software release</a></span></dt><dt><span class="section"><a href="#Finding-commits-With-given-Content">Finding commits referencing a file with given content</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="#Developing-With-git">3. Developing with Git</a></span></dt><dd><dl><dt><span class="section"><a href="#telling-git-your-name">Telling Git your name</a></span></dt><dt><span class="section"><a href="#creating-a-new-repository">Creating a new repository</a></span></dt><dt><span class="section"><a href="#how-to-make-a-commit">How to make a commit</a></span></dt><dt><span class="section"><a href="#creating-good-commit-messages">Creating good commit messages</a></span></dt><dt><span class="section"><a href="#ignoring-files">Ignoring files</a></span></dt><dt><span class="section"><a href="#how-to-merge">How to merge</a></span></dt><dt><span class="section"><a href="#resolving-a-merge">Resolving a merge</a></span></dt><dd><dl><dt><span class="section"><a href="#conflict-resolution">Getting conflict-resolution help during a merge</a></span></dt></dl></dd><dt><span class="section"><a href="#undoing-a-merge">Undoing a merge</a></span></dt><dt><span class="section"><a href="#fast-forwards">Fast-forward merges</a></span></dt><dt><span class="section"><a href="#fixing-mistakes">Fixing mistakes</a></span></dt><dd><dl><dt><span class="section"><a href="#reverting-a-commit">Fixing a mistake with a new commit</a></span></dt><dt><span class="section"><a href="#fixing-a-mistake-by-rewriting-history">Fixing a mistake by rewriting history</a></span></dt><dt><span class="section"><a href="#checkout-of-path">Checking out an old version of a file</a></span></dt><dt><span class="section"><a href="#interrupted-work">Temporarily setting aside work in progress</a></span></dt></dl></dd><dt><span class="section"><a href="#ensuring-good-performance">Ensuring good performance</a></span></dt><dt><span class="section"><a href="#ensuring-reliability">Ensuring reliability</a></span></dt><dd><dl><dt><span class="section"><a href="#checking-for-corruption">Checking the repository for corruption</a></span></dt><dt><span class="section"><a href="#recovering-lost-changes">Recovering lost changes</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="#sharing-development">4. Sharing development with others</a></span></dt><dd><dl><dt><span class="section"><a href="#getting-updates-With-git-pull">Getting updates with git pull</a></span></dt><dt><span class="section"><a href="#submitting-patches">Submitting patches to a project</a></span></dt><dt><span class="section"><a href="#importing-patches">Importing patches to a project</a></span></dt><dt><span class="section"><a href="#public-repositories">Public Git repositories</a></span></dt><dd><dl><dt><span class="section"><a href="#setting-up-a-public-repository">Setting up a public repository</a></span></dt><dt><span class="section"><a href="#exporting-via-git">Exporting a Git repository via the Git protocol</a></span></dt><dt><span class="section"><a href="#exporting-via-http">Exporting a git repository via HTTP</a></span></dt><dt><span class="section"><a href="#pushing-changes-to-a-public-repository">Pushing changes to a public repository</a></span></dt><dt><span class="section"><a href="#forcing-push">What to do when a push fails</a></span></dt><dt><span class="section"><a href="#setting-up-a-shared-repository">Setting up a shared repository</a></span></dt><dt><span class="section"><a href="#setting-up-gitweb">Allowing web browsing of a repository</a></span></dt></dl></dd><dt><span class="section"><a href="#how-to-get-a-git-repository-with-minimal-history">How to get a Git repository with minimal history</a></span></dt><dt><span class="section"><a href="#sharing-development-examples">Examples</a></span></dt><dd><dl><dt><span class="section"><a href="#maintaining-topic-branches">Maintaining topic branches for a Linux subsystem maintainer</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="#cleaning-up-history">5. Rewriting history and maintaining patch series</a></span></dt><dd><dl><dt><span class="section"><a href="#patch-series">Creating the perfect patch series</a></span></dt><dt><span class="section"><a href="#using-git-rebase">Keeping a patch series up to date using git rebase</a></span></dt><dt><span class="section"><a href="#rewriting-one-commit">Rewriting a single commit</a></span></dt><dt><span class="section"><a href="#reordering-patch-series">Reordering or selecting from a patch series</a></span></dt><dt><span class="section"><a href="#interactive-rebase">Using interactive rebases</a></span></dt><dt><span class="section"><a href="#patch-series-tools">Other tools</a></span></dt><dt><span class="section"><a href="#problems-With-rewriting-history">Problems with rewriting history</a></span></dt><dt><span class="section"><a href="#bisect-merges">Why bisecting merge commits can be harder than bisecting linear history</a></span></dt></dl></dd><dt><span class="chapter"><a href="#advanced-branch-management">6. Advanced branch management</a></span></dt><dd><dl><dt><span class="section"><a href="#fetching-individual-branches">Fetching individual branches</a></span></dt><dt><span class="section"><a href="#fetch-fast-forwards">git fetch and fast-forwards</a></span></dt><dt><span class="section"><a href="#forcing-fetch">Forcing git fetch to do non-fast-forward updates</a></span></dt><dt><span class="section"><a href="#remote-branch-configuration">Configuring remote-tracking branches</a></span></dt></dl></dd><dt><span class="chapter"><a href="#git-concepts">7. Git concepts</a></span></dt><dd><dl><dt><span class="section"><a href="#the-object-database">The Object Database</a></span></dt><dd><dl><dt><span class="section"><a href="#commit-object">Commit Object</a></span></dt><dt><span class="section"><a href="#tree-object">Tree Object</a></span></dt><dt><span class="section"><a href="#blob-object">Blob Object</a></span></dt><dt><span class="section"><a href="#trust">Trust</a></span></dt><dt><span class="section"><a href="#tag-object">Tag Object</a></span></dt><dt><span class="section"><a href="#pack-files">How Git stores objects efficiently: pack files</a></span></dt><dt><span class="section"><a href="#dangling-objects">Dangling objects</a></span></dt><dt><span class="section"><a href="#recovering-from-repository-corruption">Recovering from repository corruption</a></span></dt></dl></dd><dt><span class="section"><a href="#the-index">The index</a></span></dt></dl></dd><dt><span class="chapter"><a href="#submodules">8. Submodules</a></span></dt><dd><dl><dt><span class="section"><a href="#pitfalls-with-submodules">Pitfalls with submodules</a></span></dt></dl></dd><dt><span class="chapter"><a href="#low-level-operations">9. Low-level Git operations</a></span></dt><dd><dl><dt><span class="section"><a href="#object-manipulation">Object access and manipulation</a></span></dt><dt><span class="section"><a href="#the-workflow">The Workflow</a></span></dt><dd><dl><dt><span class="section"><a href="#working-directory-to-index">working directory → index</a></span></dt><dt><span class="section"><a href="#index-to-object-database">index → object database</a></span></dt><dt><span class="section"><a href="#object-database-to-index">object database → index</a></span></dt><dt><span class="section"><a href="#index-to-working-directory">index → working directory</a></span></dt><dt><span class="section"><a href="#tying-it-all-together">Tying it all together</a></span></dt></dl></dd><dt><span class="section"><a href="#examining-the-data">Examining the data</a></span></dt><dt><span class="section"><a href="#merging-multiple-trees">Merging multiple trees</a></span></dt><dt><span class="section"><a href="#merging-multiple-trees-2">Merging multiple trees, continued</a></span></dt></dl></dd><dt><span class="chapter"><a href="#hacking-git">10. Hacking Git</a></span></dt><dd><dl><dt><span class="section"><a href="#object-details">Object storage format</a></span></dt><dt><span class="section"><a href="#birdview-on-the-source-code">A birds-eye view of Git’s source code</a></span></dt></dl></dd><dt><span class="chapter"><a href="#glossary">11. Git Glossary</a></span></dt><dd><dl><dt><span class="section"><a href="#git-explained">Git explained</a></span></dt></dl></dd><dt><span class="appendix"><a href="#git-quick-start">A. Git Quick Reference</a></span></dt><dd><dl><dt><span class="section"><a href="#quick-creating-a-new-repository">Creating a new repository</a></span></dt><dt><span class="section"><a href="#managing-branches">Managing branches</a></span></dt><dt><span class="section"><a href="#exploring-history">Exploring history</a></span></dt><dt><span class="section"><a href="#making-changes">Making changes</a></span></dt><dt><span class="section"><a href="#merging">Merging</a></span></dt><dt><span class="section"><a href="#sharing-your-changes">Sharing your changes</a></span></dt><dt><span class="section"><a href="#repository-maintenance">Repository maintenance</a></span></dt></dl></dd><dt><span class="appendix"><a href="#todo">B. Notes and todo list for this manual</a></span></dt><dd><dl><dt><span class="section"><a href="#todo-list">Todo list</a></span></dt></dl></dd></dl></div><div class="preface"><div class="titlepage"><div><div><h1 class="title"><a name="_introduction"></a>Introduction</h1></div></div></div><p>Git is a fast distributed revision control system.</p><p>This manual is designed to be readable by someone with basic UNIX
command-line skills, but no previous knowledge of Git.</p><p><a class="xref" href="#repositories-and-branches" title="Chapter 1. Repositories and Branches">Chapter 1, <i>Repositories and Branches</i></a> and <a class="xref" href="#exploring-git-history" title="Chapter 2. Exploring Git history">Chapter 2, <i>Exploring Git history</i></a> explain how
to fetch and study a project using git—read these chapters to learn how
to build and test a particular version of a software project, search for