summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2023-06-23 13:26:29 -0700
committerJunio C Hamano <gitster@pobox.com>2023-06-23 13:26:29 -0700
commit9469c13db24e0edec73595887cf74f38efd89a55 (patch)
tree269e9e6ab7f3dc3a8481c537a8e49f018f6361c2
parenta7b2c10835189668841231edffc77e7dbb020487 (diff)
downloadgit-htmldocs-9469c13db24e0edec73595887cf74f38efd89a55.tar.gz
Autogenerated HTML docs for v2.41.0-191-g6ff334
-rw-r--r--MyFirstContribution.html2
-rw-r--r--MyFirstObjectWalk.html2
-rw-r--r--RelNotes/2.42.0.txt87
-rw-r--r--ReviewingGuidelines.html2
-rw-r--r--SubmittingPatches.html2
-rw-r--r--ToolsForGit.html2
-rw-r--r--config.txt2
-rw-r--r--everyday.html2
-rw-r--r--git-cat-file.html21
-rw-r--r--git-cat-file.txt15
-rw-r--r--git-config.html57
-rw-r--r--git-credential.html4
-rw-r--r--git-credential.txt2
-rw-r--r--git-cvsserver.html4
-rw-r--r--git-cvsserver.txt2
-rw-r--r--git-describe.html6
-rw-r--r--git-describe.txt4
-rw-r--r--git-diff.html17
-rw-r--r--git-diff.txt9
-rw-r--r--git-fetch.html2
-rw-r--r--git-format-patch.html4
-rw-r--r--git-format-patch.txt2
-rw-r--r--git-gc.html19
-rw-r--r--git-interpret-trailers.html137
-rw-r--r--git-interpret-trailers.txt134
-rw-r--r--git-ls-tree.html10
-rw-r--r--git-ls-tree.txt8
-rw-r--r--git-merge.html15
-rw-r--r--git-merge.txt11
-rw-r--r--git-mktag.html4
-rw-r--r--git-mktag.txt2
-rw-r--r--git-pull.html2
-rw-r--r--git-push.html2
-rw-r--r--git-remote-helpers.html2
-rw-r--r--git-rev-parse.html106
-rw-r--r--git-sparse-checkout.html4
-rw-r--r--git-sparse-checkout.txt2
-rw-r--r--git-stash.html4
-rw-r--r--git-stash.txt2
-rw-r--r--git-worktree.html22
-rw-r--r--git-worktree.txt16
-rw-r--r--gitcredentials.html4
-rw-r--r--gitcredentials.txt2
-rw-r--r--gitrevisions.html106
-rw-r--r--gitweb.html4
-rw-r--r--gitweb.txt2
-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--revisions.txt50
-rw-r--r--technical/api-error-handling.html2
-rw-r--r--technical/api-index.html2
-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/remembering-renames.txt2
-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--urls-remotes.txt2
-rw-r--r--user-manual.html23
-rw-r--r--user-manual.txt27
86 files changed, 791 insertions, 283 deletions
diff --git a/MyFirstContribution.html b/MyFirstContribution.html
index b4c1d97cc..09fbb99eb 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-06-13</span>
+<span id="revdate">2023-06-23</span>
</div>
<div id="content">
<div class="sect1">
diff --git a/MyFirstObjectWalk.html b/MyFirstObjectWalk.html
index fbcc392e2..071a897c1 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-06-13</span>
+<span id="revdate">2023-06-23</span>
</div>
<div id="content">
<div class="sect1">
diff --git a/RelNotes/2.42.0.txt b/RelNotes/2.42.0.txt
index f59fd7922..5597ba48d 100644
--- a/RelNotes/2.42.0.txt
+++ b/RelNotes/2.42.0.txt
@@ -6,12 +6,31 @@ UI, Workflows & Features
* "git pack-refs" learns "--include" and "--exclude" to tweak the ref
hierarchy to be packed using pattern matching.
+ * 'git worktree add' learned how to create a worktree based on an
+ orphaned branch with `--orphan`.
+
+ * "git pack-objects" learned to invoke a new hook program that
+ enumerates extra objects to be used as anchoring points to keep
+ otherwise unreachable objects in cruft packs.
+
Performance, Internal Implementation, Development Support etc.
* "git diff-tree" has been taught to take advantage of the
sparse-index feature.
+ * Clang's sanitizer implementation seems to work better than GCC's.
+ (merge d88d727143 jk/ci-use-clang-for-sanitizer-jobs later to maint).
+
+ * The object traversal using reachability bitmap done by
+ "pack-object" has been tweaked to take advantage of the fact that
+ using "boundary" commits as representative of all the uninteresting
+ ones can save quite a lot of object enumeration.
+
+ * discover_git_directory() no longer touches the_repository.
+
+ * "git worktree" learned to work better with sparse index feature.
+
Fixes since v2.41
-----------------
@@ -34,6 +53,74 @@ Fixes since v2.41
in the context of the latter.
(merge 4d28c4f75f zh/ls-files-format-atoms later to maint).
+ * Document more pseudo-refs and teach the command line completion
+ machinery to complete AUTO_MERGE.
+ (merge 982ff3a649 pb/complete-and-document-auto-merge-and-friends later to maint).
+
+ * "git submodule" code trusted the data coming from the config (and
+ the in-tree .gitmodules file) too much without validating, leading
+ to NULL dereference if the user mucks with a repository (e.g.
+ submodule.<name>.url is removed). This has been corrected.
+ (merge fbc806acd1 tb/submodule-null-deref-fix later to maint).
+
+ * The value of config.worktree is per-repository, but has been kept
+ in a singleton global variable per process. This has been OK as
+ most Git operations interacted with a single repository at a time,
+ but not right for operations like recursive "grep" that want to
+ access multiple repositories from a single process without forking.
+
+ The global variable has been eliminated and made into a member in
+ the per-repository data structure.
+ (merge 3867f6d650 vd/worktree-config-is-per-repository later to maint).
+
+ * "git [-c log.follow=true] log [--follow] ':(glob)f**'" used to barf.
+ (merge 8260bc5902 jk/log-follow-with-non-literal-pathspec later to maint).
+
+ * Introduce a mechanism to disable replace refs globally and per
+ repository.
+ (merge 9c7d1b057f ds/disable-replace-refs later to maint).
+
+ * "git cat-file --batch" and friends learned "-Z" that uses NUL
+ delimiter for both input and output.
+ (merge f79e18849b ps/cat-file-null-output later to maint).
+
+ * The reimplemented "git add -i" did not honor color.ui configuration.
+ (merge 6f74648cea ds/add-i-color-configuration-fix later to maint).
+
+ * Compilation fix for platforms without D_TYPE in struct dirent.
+ (merge 03bf92b9bf as/dtype-compilation-fix later to maint).
+
+ * Suggest to refrain from using hex literals that are non-portable
+ when writing printf(1) format strings.
+ (merge f0b68f0546 jt/doc-use-octal-with-printf later to maint).
+
+ * Simplify error message when run-command fails to start a command.
+ (merge 6d224ac286 rs/run-command-exec-error-on-noent later to maint).
+
+ * Gracefully deal with a stale MIDX file that lists a packfile that
+ no longer exists.
+ (merge 06f3867865 tb/open-midx-bitmap-fallback later to maint).
+
+ * Even when diff.ignoreSubmodules tells us to ignore submodule
+ changes, "git commit" with an index that already records changes to
+ submodules should include the submodule changes in the resulting
+ commit, but it did not.
+ (merge 5768478edc js/defeat-ignore-submodules-config-with-explicit-addition later to maint).
+
* Other code cleanup, docfix, build fix, etc.
(merge 51f9d2e563 sa/doc-ls-remote later to maint).
(merge c6d26a9dda jk/format-patch-message-id-unleak later to maint).
+ (merge f7e063f326 ps/fetch-cleanups later to maint).
+ (merge e4cf013468 tl/quote-problematic-arg-for-clarity later to maint).
+ (merge 20025fdfc7 tz/test-ssh-verifytime-fix later to maint).
+ (merge e48a21df65 tz/test-fix-pthreads-prereq later to maint).
+ (merge 68b51172e3 mh/commit-reach-get-reachable-plug-leak later to maint).
+ (merge aeee1408ce kh/use-default-notes-doc later to maint).
+ (merge 3b8724bce6 jc/test-modernization later to maint).
+ (merge 447a3b7331 jc/test-modernization-2 later to maint).
+ (merge d57fa7fc73 la/doc-interpret-trailers later to maint).
+ (merge 548afb0d9a la/docs-typofixes later to maint).
+ (merge 3744ffcbcd rs/doc-ls-tree-hex-literal later to maint).
+ (merge 6c26da8404 mh/credential-erase-improvements later to maint).
+ (merge 78e56cff69 tz/lib-gpg-prereq-fix later to maint).
+ (merge 80d32e84b5 rj/leakfixes later to maint).
diff --git a/ReviewingGuidelines.html b/ReviewingGuidelines.html
index 85ad93cec..a524aa6bf 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-06-13</span>
+<span id="revdate">2023-06-23</span>
</div>
<div id="content">
<div class="sect1">
diff --git a/SubmittingPatches.html b/SubmittingPatches.html
index 2980db3de..2c04c154f 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-06-13</span>
+<span id="revdate">2023-06-23</span>
</div>
<div id="content">
<div class="sect1">
diff --git a/ToolsForGit.html b/ToolsForGit.html
index af3d788b6..a35a8ab95 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-06-13</span>
+<span id="revdate">2023-06-23</span>
</div>
<div id="content">
<div class="sect1">
diff --git a/config.txt b/config.txt
index 0e93aef86..229b63a45 100644
--- a/config.txt
+++ b/config.txt
@@ -182,7 +182,7 @@ included, Git breaks the cycle by prohibiting these files from affecting
the resolution of these conditions (thus, prohibiting them from
declaring remote URLs).
+
-As for the naming of this keyword, it is for forwards compatibiliy with
+As for the naming of this keyword, it is for forwards compatibility with
a naming scheme that supports more variable-based include conditions,
but currently Git only supports the exact keyword described above.
diff --git a/everyday.html b/everyday.html
index 89b24ef43..f78ef860e 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-06-13</span>
+<span id="revdate">2023-06-23</span>
</div>
<div id="content">
<div id="preamble">
diff --git a/git-cat-file.html b/git-cat-file.html
index fadfda4fe..7a4c57cb6 100644
--- a/git-cat-file.html
+++ b/git-cat-file.html
@@ -754,7 +754,7 @@ git-cat-file(1) Manual Page
<em>git cat-file</em> (-t | -s) [--allow-unknown-type] &lt;object&gt;
<em>git cat-file</em> (--batch | --batch-check | --batch-command) [--batch-all-objects]
[--buffer] [--follow-symlinks] [--unordered]
- [--textconv | --filters] [-z]
+ [--textconv | --filters] [-Z]
<em>git cat-file</em> (--textconv | --filters)
[&lt;rev&gt;:&lt;path|tree-ish&gt; | --path=&lt;path|tree-ish&gt; &lt;rev&gt;]</pre>
<div class="attribution">
@@ -1138,13 +1138,24 @@ respectively print:</p></div>
</div></div>
</dd>
<dt class="hdlist1">
+-Z
+</dt>
+<dd>
+<p>
+ Only meaningful with <code>--batch</code>, <code>--batch-check</code>, or
+ <code>--batch-command</code>; input and output is NUL-delimited instead of
+ newline-delimited.
+</p>
+</dd>
+<dt class="hdlist1">
-z
</dt>
<dd>
<p>
Only meaningful with <code>--batch</code>, <code>--batch-check</code>, or
<code>--batch-command</code>; input is NUL-delimited instead of
- newline-delimited.
+ newline-delimited. This option is deprecated in favor of
+ <code>-Z</code> as the output can otherwise be ambiguous.
</p>
</dd>
</dl></div>
@@ -1303,6 +1314,10 @@ require more than 40 link resolutions to resolve).</p></div>
</div></div>
<div class="paragraph"><p>is printed when, during symlink resolution, a file is used as a
directory name.</p></div>
+<div class="paragraph"><p>Alternatively, when <code>-Z</code> is passed, the line feeds in any of the above examples
+are replaced with NUL terminators. This ensures that output will be parsable if
+the output itself would contain a linefeed and is thus recommended for
+scripting purposes.</p></div>
</div>
</div>
<div class="sect1">
@@ -1330,7 +1345,7 @@ will be reported.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2023-01-27 09:44:35 PST
+ 2023-06-23 13:24:09 PDT
</div>
</div>
</body>
diff --git a/git-cat-file.txt b/git-cat-file.txt
index 411de2e27..0e4936d18 100644
--- a/git-cat-file.txt
+++ b/git-cat-file.txt
@@ -14,7 +14,7 @@ SYNOPSIS
'git cat-file' (-t | -s) [--allow-unknown-type] <object>
'git cat-file' (--batch | --batch-check | --batch-command) [--batch-all-objects]
[--buffer] [--follow-symlinks] [--unordered]
- [--textconv | --filters] [-z]
+ [--textconv | --filters] [-Z]
'git cat-file' (--textconv | --filters)
[<rev>:<path|tree-ish> | --path=<path|tree-ish> <rev>]
@@ -243,10 +243,16 @@ respectively print:
/etc/passwd
--
+-Z::
+ Only meaningful with `--batch`, `--batch-check`, or
+ `--batch-command`; input and output is NUL-delimited instead of
+ newline-delimited.
+
-z::
Only meaningful with `--batch`, `--batch-check`, or
`--batch-command`; input is NUL-delimited instead of
- newline-delimited.
+ newline-delimited. This option is deprecated in favor of
+ `-Z` as the output can otherwise be ambiguous.
OUTPUT
@@ -384,6 +390,11 @@ notdir SP <size> LF
is printed when, during symlink resolution, a file is used as a
directory name.
+Alternatively, when `-Z` is passed, the line feeds in any of the above examples
+are replaced with NUL terminators. This ensures that output will be parsable if
+the output itself would contain a linefeed and is thus recommended for
+scripting purposes.
+
CAVEATS
-------
diff --git a/git-config.html b/git-config.html
index a5ee60ba9..65fb164ff 100644
--- a/git-config.html
+++ b/git-config.html
@@ -1759,7 +1759,7 @@ potentially-included files can affect whether such files are potentially
included, Git breaks the cycle by prohibiting these files from affecting
the resolution of these conditions (thus, prohibiting them from
declaring remote URLs).</p></div>
-<div class="paragraph"><p>As for the naming of this keyword, it is for forwards compatibiliy with
+<div class="paragraph"><p>As for the naming of this keyword, it is for forwards compatibility with
a naming scheme that supports more variable-based include conditions,
but currently Git only supports the exact keyword described above.</p></div>
</dd>
@@ -2328,6 +2328,16 @@ diverging
Advice shown when a fast-forward is not possible.
</p>
</dd>
+<dt class="hdlist1">
+worktreeAddOrphan
+</dt>
+<dd>
+<p>
+ Advice shown when a user tries to create a worktree from an
+ invalid reference, to instruct how to create a new orphan
+ branch instead.
+</p>
+</dd>
</dl></div>
</div></div>
</dd>
@@ -5436,6 +5446,12 @@ feature.experimental
skipping more commits at a time, reducing the number of round trips.
</p>
</li>
+<li>
+<p>
+<code>pack.useBitmapBoundaryTraversal=true</code> may improve bitmap traversal times by
+walking fewer objects.
+</p>
+</li>
</ul></div>
</dd>
<dt class="hdlist1">
@@ -6231,6 +6247,25 @@ project most users will want to expire them sooner, which is why the
default is more aggressive than <code>gc.reflogExpire</code>.</p></div>
</dd>
<dt class="hdlist1">
+gc.recentObjectsHook
+</dt>
+<dd>
+<p>
+ When considering whether or not to remove an object (either when
+ generating a cruft pack or storing unreachable objects as
+ loose), use the shell to execute the specified command(s).
+ Interpret their output as object IDs which Git will consider as
+ "recent", regardless of their age. By treating their mtimes as
+ "now", any objects (and their descendants) mentioned in the
+ output will be kept regardless of their true age.
+</p>
+<div class="paragraph"><p>Output must contain exactly one hex object ID per line, and nothing
+else. Objects which cannot be found in the repository are ignored.
+Multiple hooks are supported, but all must exit successfully, else the
+operation (either generating a cruft pack or unpacking unreachable
+objects) will be halted.</p></div>
+</dd>
+<dt class="hdlist1">
gc.rerereResolved
</dt>
<dd>
@@ -9026,6 +9061,26 @@ pack.useBitmaps
</p>
</dd>
<dt class="hdlist1">
+pack.useBitmapBoundaryTraversal
+</dt>
+<dd>
+<p>
+ When true, Git will use an experimental algorithm for computing
+ reachability queries with bitmaps. Instead of building up
+ complete bitmaps for all of the negated tips and then OR-ing
+ them together, consider negated tips with existing bitmaps as
+ additive (i.e. OR-ing them into the result if they exist,
+ ignoring them otherwise), and build up a bitmap at the boundary
+ instead.
+</p>
+<div class="paragraph"><p>When using this algorithm, Git may include too many objects as a result
+of not opening up trees belonging to certain UNINTERESTING commits. This
+inexactness matches the non-bitmap traversal algorithm.</p></div>
+<div class="paragraph"><p>In many cases, this can provide a speed-up over the exact algorithm,
+particularly when there is poor bitmap coverage of the negated side of
+the query.</p></div>
+</dd>
+<dt class="hdlist1">
pack.useSparse
</dt>
<dd>
diff --git a/git-credential.html b/git-credential.html
index c355f9e8c..19960da87 100644
--- a/git-credential.html
+++ b/git-credential.html
@@ -778,7 +778,7 @@ to any configured credential helpers, which may store the credential
for later use.</p></div>
<div class="paragraph"><p>If the action is <code>reject</code>, git-credential will send the description to
any configured credential helpers, which may erase any stored
-credential matching the description.</p></div>
+credentials matching the description.</p></div>
<div class="paragraph"><p>If the action is <code>approve</code> or <code>reject</code>, no output should be emitted.</p></div>
</div>
</div>
@@ -986,7 +986,7 @@ to pass additional information to credential helpers.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2023-05-10 11:57:07 PDT
+ 2023-06-23 13:24:09 PDT
</div>
</div>
</body>
diff --git a/git-credential.txt b/git-credential.txt
index 0e6d9e85e..a220afed4 100644
--- a/git-credential.txt
+++ b/git-credential.txt
@@ -39,7 +39,7 @@ for later use.
If the action is `reject`, git-credential will send the description to
any configured credential helpers, which may erase any stored
-credential matching the description.
+credentials matching the description.
If the action is `approve` or `reject`, no output should be emitted.
diff --git a/git-cvsserver.html b/git-cvsserver.html
index 023c14c75..a9f96a95b 100644
--- a/git-cvsserver.html
+++ b/git-cvsserver.html
@@ -898,7 +898,7 @@ for example:</p></div>
myuser:$5$.NqmNH1vwfzGpV8B$znZIcumu1tNLATgV2l6e1/mY8RzhUDHMOaVOeL1cxV3</code></pre>
</div></div>
<div class="paragraph"><p>You can use the <em>htpasswd</em> facility that comes with Apache to make these
-files, but only with the -d option (or -B if your system suports it).</p></div>
+files, but only with the -d option (or -B if your system supports it).</p></div>
<div class="paragraph"><p>Preferably use the system specific utility that manages password hash
creation in your platform (e.g. mkpasswd in Linux, encrypt in OpenBSD or
pwhash in NetBSD) and paste it in the right location.</p></div>
@@ -1327,7 +1327,7 @@ and <code>gitcvs.allBinary</code> to "guess".</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2022-07-27 09:46:08 PDT
+ 2023-06-23 13:24:09 PDT
</div>
</div>
</body>
diff --git a/git-cvsserver.txt b/git-cvsserver.txt
index 53f111bc0..cf4a5a283 100644
--- a/git-cvsserver.txt
+++ b/git-cvsserver.txt
@@ -118,7 +118,7 @@ for example:
myuser:$5$.NqmNH1vwfzGpV8B$znZIcumu1tNLATgV2l6e1/mY8RzhUDHMOaVOeL1cxV3
------
You can use the 'htpasswd' facility that comes with Apache to make these
-files, but only with the -d option (or -B if your system suports it).
+files, but only with the -d option (or -B if your system supports it).
Preferably use the system specific utility that manages password hash
creation in your platform (e.g. mkpasswd in Linux, encrypt in OpenBSD or
diff --git a/git-describe.html b/git-describe.html
index 865764356..43efd6c88 100644
--- a/git-describe.html
+++ b/git-describe.html
@@ -961,7 +961,7 @@ an abbreviated object name for the commit itself ("2414721")
at the end.</p></div>
<div class="paragraph"><p>The number of additional commits is the number
of commits which would be displayed by "git log v1.0.4..parent".
-The hash suffix is "-g" + an unambigous abbreviation for the tip commit
+The hash suffix is "-g" + an unambiguous abbreviation for the tip commit
of parent (which was <code>2414721b194453f058079d897d13c4e377f92dc6</code>). The
length of the abbreviation scales as the repository grows, using the
approximate number of objects in the repository and a bit of math
@@ -1027,7 +1027,7 @@ will be the smallest number of commits possible.</p></div>
<div class="sectionbody">
<div class="paragraph"><p>Tree objects as well as tag objects not pointing at commits, cannot be described.
When describing blobs, the lightweight tags pointing at blobs are ignored,
-but the blob is still described as &lt;committ-ish&gt;:&lt;path&gt; despite the lightweight
+but the blob is still described as &lt;commit-ish&gt;:&lt;path&gt; despite the lightweight
tag being favorable.</p></div>
</div>
</div>
@@ -1042,7 +1042,7 @@ tag being favorable.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2021-06-09 23:21:48 PDT
+ 2023-06-23 13:24:09 PDT
</div>
</div>
</body>
diff --git a/git-describe.txt b/git-describe.txt
index c6a79c2a0..08ff71570 100644
--- a/git-describe.txt
+++ b/git-describe.txt
@@ -140,7 +140,7 @@ at the end.
The number of additional commits is the number
of commits which would be displayed by "git log v1.0.4..parent".
-The hash suffix is "-g" + an unambigous abbreviation for the tip commit
+The hash suffix is "-g" + an unambiguous abbreviation for the tip commit
of parent (which was `2414721b194453f058079d897d13c4e377f92dc6`). The
length of the abbreviation scales as the repository grows, using the
approximate number of objects in the repository and a bit of math
@@ -203,7 +203,7 @@ BUGS
Tree objects as well as tag objects not pointing at commits, cannot be described.
When describing blobs, the lightweight tags pointing at blobs are ignored,
-but the blob is still described as <committ-ish>:<path> despite the lightweight
+but the blob is still described as <commit-ish>:<path> despite the lightweight
tag being favorable.
GIT
diff --git a/git-diff.html b/git-diff.html
index 5cf1b5ead..110ee5fba 100644
--- a/git-diff.html
+++ b/git-diff.html
@@ -876,7 +876,11 @@ of &lt;commit&gt; and HEAD. <code>git diff --merge-base A</code> is equivalent
<div class="paragraph"><p>Just in case you are doing something exotic, it should be
noted that all of the &lt;commit&gt; in the above description, except
in the <code>--merge-base</code> case and in the last two forms that use <code>..</code>
-notations, can be any &lt;tree&gt;.</p></div>
+notations, can be any &lt;tree&gt;. A tree of interest is the one pointed to
+by the special ref <code>AUTO_MERGE</code>, which is written by the <em>ort</em> merge
+strategy upon hitting merge conflicts (see <a href="git-merge.html">git-merge(1)</a>).
+Comparing the working tree with <code>AUTO_MERGE</code> shows changes you&#8217;ve made
+so far to resolve textual conflicts (see the examples below).</p></div>
<div class="paragraph"><p>For a more complete list of ways to spell &lt;commit&gt;, see
"SPECIFYING REVISIONS" section in <a href="gitrevisions.html">gitrevisions(7)</a>.
However, "diff" is about comparing two <em>endpoints</em>, not ranges,
@@ -2849,7 +2853,8 @@ Various ways to check your working tree
<div class="content">
<pre><code>$ git diff <b>&lt;1&gt;</b>
$ git diff --cached <b>&lt;2&gt;</b>
-$ git diff HEAD <b>&lt;3&gt;</b></code></pre>
+$ git diff HEAD <b>&lt;3&gt;</b>
+$ git diff AUTO_MERGE <b>&lt;4&gt;</b></code></pre>
</div></div>
<div class="colist arabic"><ol>
<li>
@@ -2869,6 +2874,12 @@ Changes in the working tree since your last commit; what you
would be committing if you run <code>git commit -a</code>
</p>
</li>
+<li>
+<p>
+Changes in the working tree you&#8217;ve made to resolve textual
+ conflicts so far.
+</p>
+</li>
</ol></div>
</dd>
<dt class="hdlist1">
@@ -3659,7 +3670,7 @@ diff.colorMovedWS
<div id="footer">
<div id="footer-text">
Last updated
- 2022-10-26 11:43:43 PDT
+ 2023-06-23 13:24:09 PDT
</div>
</div>
</body>
diff --git a/git-diff.txt b/git-diff.txt
index 52b679256..08087ffad 100644
--- a/git-diff.txt
+++ b/git-diff.txt
@@ -102,7 +102,11 @@ If --merge-base is given, use the merge base of the two commits for the
Just in case you are doing something exotic, it should be
noted that all of the <commit> in the above description, except
in the `--merge-base` case and in the last two forms that use `..`
-notations, can be any <tree>.
+notations, can be any <tree>. A tree of interest is the one pointed to
+by the special ref `AUTO_MERGE`, which is written by the 'ort' merge
+strategy upon hitting merge conflicts (see linkgit:git-merge[1]).
+Comparing the working tree with `AUTO_MERGE` shows changes you've made
+so far to resolve textual conflicts (see the examples below).
For a more complete list of ways to spell <commit>, see
"SPECIFYING REVISIONS" section in linkgit:gitrevisions[7].
@@ -152,6 +156,7 @@ Various ways to check your working tree::
$ git diff <1>
$ git diff --cached <2>
$ git diff HEAD <3>
+$ git diff AUTO_MERGE <4>
------------
+
<1> Changes in the working tree not yet staged for the next commit.
@@ -159,6 +164,8 @@ $ git diff HEAD <3>
would be committing if you run `git commit` without `-a` option.
<3> Changes in the working tree since your last commit; what you
would be committing if you run `git commit -a`
+<4> Changes in the working tree you've made to resolve textual
+ conflicts so far.
Comparing with arbitrary commits::
+
diff --git a/git-fetch.html b/git-fetch.html
index ee746259f..b8134f065 100644
--- a/git-fetch.html
+++ b/git-fetch.html
@@ -1608,7 +1608,7 @@ config file would appear like this:</p></div>
<div class="paragraph"><p>The <code>&lt;pushurl&gt;</code> is used for pushes only. It is optional and defaults
to <code>&lt;URL&gt;</code>. Pushing to a remote affects all defined pushurls or to all
defined urls if no pushurls are defined. Fetch, however, will only
-fetch from the first defined url if muliple urls are defined.</p></div>
+fetch from the first defined url if multiple urls are defined.</p></div>
</div>
<div class="sect2">
<h3 id="_named_file_in_code_git_dir_remotes_code">Named file in <code>$GIT_DIR/remotes</code></h3>
diff --git a/git-format-patch.html b/git-format-patch.html
index 39ab69211..aed328856 100644
--- a/git-format-patch.html
+++ b/git-format-patch.html
@@ -1883,7 +1883,7 @@ populated with placeholder text.</p></div>
or "--reroll-count=4rev2" are allowed), but the downside of
using such a reroll-count is that the range-diff/interdiff
with the previous version does not state exactly which
- version the new interation is compared against.
+ version the new iteration is compared against.
</p>
</dd>
<dt class="hdlist1">
@@ -2603,7 +2603,7 @@ merge commit.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2023-04-21 15:58:28 PDT
+ 2023-06-23 13:24:09 PDT
</div>
</div>
</body>
diff --git a/git-format-patch.txt b/git-format-patch.txt
index b1c13fb39..373b46fc0 100644
--- a/git-format-patch.txt
+++ b/git-format-patch.txt
@@ -245,7 +245,7 @@ populated with placeholder text.
or "--reroll-count=4rev2" are allowed), but the downside of
using such a reroll-count is that the range-diff/interdiff
with the previous version does not state exactly which
- version the new interation is compared against.
+ version the new iteration is compared against.
--to=<email>::
Add a `To:` header to the email headers. This is in addition
diff --git a/git-gc.html b/git-gc.html
index fb7930eaa..fb9460a8f 100644
--- a/git-gc.html
+++ b/git-gc.html
@@ -1098,6 +1098,25 @@ project most users will want to expire them sooner, which is why the
default is more aggressive than <code>gc.reflogExpire</code>.</p></div>
</dd>
<dt class="hdlist1">
+gc.recentObjectsHook
+</dt>
+<dd>
+<p>
+ When considering whether or not to remove an object (either when
+ generating a cruft pack or storing unreachable objects as
+ loose), use the shell to execute the specified command(s).
+ Interpret their output as object IDs which Git will consider as
+ "recent", regardless of their age. By treating their mtimes as
+ "now", any objects (and their descendants) mentioned in the
+ output will be kept regardless of their true age.
+</p>
+<div class="paragraph"><p>Output must contain exactly one hex object ID per line, and nothing
+else. Objects which cannot be found in the repository are ignored.
+Multiple hooks are supported, but all must exit successfully, else the
+operation (either generating a cruft pack or unpacking unreachable
+objects) will be halted.</p></div>
+</dd>
+<dt class="hdlist1">
gc.rerereResolved
</dt>
<dd>
diff --git a/git-interpret-trailers.html b/git-interpret-trailers.html
index 2d00f1a8b..d26868bc5 100644
--- a/git-interpret-trailers.html
+++ b/git-interpret-trailers.html
@@ -759,54 +759,75 @@ git-interpret-trailers(1) Manual Page
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
-<div class="paragraph"><p>Help parsing or adding <em>trailers</em> lines, that look similar to RFC 822 e-mail
+<div class="paragraph"><p>Add or parse <em>trailer</em> lines that look similar to RFC 822 e-mail
headers, at the end of the otherwise free-form part of a commit
-message.</p></div>
-<div class="paragraph"><p>This command reads some patches or commit messages from either the
-&lt;file&gt; arguments or the standard input if no &lt;file&gt; is specified. If
-<code>--parse</code> is specified, the output consists of the parsed trailers.</p></div>
-<div class="paragraph"><p>Otherwise, this command applies the arguments passed using the
-<code>--trailer</code> option, if any, to the commit message part of each input
-file. The result is emitted on the standard output.</p></div>
+message. For example, in the following commit message</p></div>
+<div class="listingblock">
+<div class="content">
+<pre><code>subject
+
+Lorem ipsum dolor sit amet, consectetur adipiscing elit.
+
+Signed-off-by: Alice &lt;alice@example.com&gt;
+Signed-off-by: Bob &lt;bob@example.com&gt;</code></pre>
+</div></div>
+<div class="paragraph"><p>the last two lines starting with "Signed-off-by" are trailers.</p></div>
+<div class="paragraph"><p>This command reads commit messages from either the
+&lt;file&gt; arguments or the standard input if no &lt;file&gt; is specified.
+If <code>--parse</code> is specified, the output consists of the parsed trailers.
+Otherwise, this command applies the arguments passed using the
+<code>--trailer</code> option, if any, to each input file. The result is emitted on the
+standard output.</p></div>
+<div class="paragraph"><p>This command can also operate on the output of <a href="git-format-patch.html">git-format-patch(1)</a>,
+which is more elaborate than a plain commit message. Namely, such output
+includes a commit message (as above), a "---" divider line, and a patch part.
+For these inputs, the divider and patch parts are not modified by
+this command and are emitted as is on the output, unless
+<code>--no-divider</code> is specified.</p></div>
<div class="paragraph"><p>Some configuration variables control the way the <code>--trailer</code> arguments
-are applied to each commit message and the way any existing trailer in
-the commit message is changed. They also make it possible to
+are applied to each input and the way any existing trailer in
+the input is changed. They also make it possible to
automatically add some trailers.</p></div>
<div class="paragraph"><p>By default, a <em>&lt;token&gt;=&lt;value&gt;</em> or <em>&lt;token&gt;:&lt;value&gt;</em> argument given
using <code>--trailer</code> will be appended after the existing trailers only if
the last trailer has a different (&lt;token&gt;, &lt;value&gt;) pair (or if there
is no existing trailer). The &lt;token&gt; and &lt;value&gt; parts will be trimmed
to remove starting and trailing whitespace, and the resulting trimmed
-&lt;token&gt; and &lt;value&gt; will appear in the message like this:</p></div>
+&lt;token&gt; and &lt;value&gt; will appear in the output like this:</p></div>
<div class="listingblock">
<div class="content">
<pre><code>token: value</code></pre>
</div></div>
<div class="paragraph"><p>This means that the trimmed &lt;token&gt; and &lt;value&gt; will be separated by
-<code>': '</code> (one colon followed by one space).</p></div>
+<code>': '</code> (one colon followed by one space). For convenience, the &lt;token&gt; can be a
+shortened string key (e.g., "sign") instead of the full string which should
+appear before the separator on the output (e.g., "Signed-off-by"). This can be
+configured using the <em>trailer.&lt;token&gt;.key</em> configuration variable.</p></div>
<div class="paragraph"><p>By default the new trailer will appear at the end of all the existing
trailers. If there is no existing trailer, the new trailer will appear
-after the commit message part of the output, and, if there is no line
-with only spaces at the end of the commit message part, one blank line
-will be added before the new trailer.</p></div>
-<div class="paragraph"><p>Existing trailers are extracted from the input message by looking for
+at the end of the input. A blank line will be added before the new
+trailer if there isn&#8217;t one already.</p></div>
+<div class="paragraph"><p>Existing trailers are extracted from the input by looking for
a group of one or more lines that (i) is all trailers, or (ii) contains at
least one Git-generated or user-configured trailer and consists of at
least 25% trailers.
The group must be preceded by one or more empty (or whitespace-only) lines.
-The group must either be at the end of the message or be the last
+The group must either be at the end of the input or be the last
non-whitespace lines before a line that starts with <em>---</em> (followed by a
-space or the end of the line). Such three minus signs start the patch
-part of the message. See also <code>--no-divider</code> below.</p></div>
+space or the end of the line).</p></div>
<div class="paragraph"><p>When reading trailers, there can be no whitespace before or inside the
-token, but any number of regular space and tab characters are allowed
-between the token and the separator. There can be whitespaces before,
-inside or after the value. The value may be split over multiple lines
+&lt;token&gt;, but any number of regular space and tab characters are allowed
+between the &lt;token&gt; and the separator. There can be whitespaces before,
+inside or after the &lt;value&gt;. The &lt;value&gt; may be split over multiple lines
with each subsequent line starting with at least one whitespace, like
-the "folding" in RFC 822.</p></div>
-<div class="paragraph"><p>Note that <em>trailers</em> do not follow and are not intended to follow many
-rules for RFC 822 headers. For example they do not follow
-the encoding rules and probably many other rules.</p></div>
+the "folding" in RFC 822. Example:</p></div>
+<div class="listingblock">
+<div class="content">
+<pre><code>token: This is a very long value, with spaces and
+ newlines in it.</code></pre>
+</div></div>
+<div class="paragraph"><p>Note that trailers do not follow (nor are they intended to follow) many of the
+rules for RFC 822 headers. For example they do not follow the encoding rule.</p></div>
</div>
</div>
<div class="sect1">
@@ -827,7 +848,7 @@ the encoding rules and probably many other rules.</p></div>
<dd>
<p>
If the &lt;value&gt; part of any trailer contains only whitespace,
- the whole trailer will be removed from the resulting message.
+ the whole trailer will be removed from the output.
This applies to existing trailers as well as new trailers.
</p>
</dd>
@@ -837,7 +858,7 @@ the encoding rules and probably many other rules.</p></div>
<dd>
<p>
Specify a (&lt;token&gt;, &lt;value&gt;) pair that should be applied as a
- trailer to the input messages. See the description of this
+ trailer to the inputs. See the description of this
command.
</p>
</dd>
@@ -865,7 +886,7 @@ the encoding rules and probably many other rules.</p></div>
<dd>
<p>
Specify what action will be performed when there is already at
- least one trailer with the same &lt;token&gt; in the message. A setting
+ least one trailer with the same &lt;token&gt; in the input. A setting
provided with <em>--if-exists</em> overrides all configuration variables
and applies to all <em>--trailer</em> options until the next occurrence of
<em>--if-exists</em> or <em>--no-if-exists</em>. Possible actions are <code>addIfDifferent</code>,
@@ -881,7 +902,7 @@ the encoding rules and probably many other rules.</p></div>
<dd>
<p>
Specify what action will be performed when there is no other
- trailer with the same &lt;token&gt; in the message. A setting
+ trailer with the same &lt;token&gt; in the input. A setting
provided with <em>--if-missing</em> overrides all configuration variables
and applies to all <em>--trailer</em> options until the next occurrence of
<em>--if-missing</em> or <em>--no-if-missing</em>. Possible actions are <code>doNothing</code>
@@ -985,7 +1006,7 @@ trailer.ifexists
<p>
This option makes it possible to choose what action will be
performed when there is already at least one trailer with the
- same &lt;token&gt; in the message.
+ same &lt;token&gt; in the input.
</p>
<div class="paragraph"><p>The valid values for this option are: <code>addIfDifferentNeighbor</code> (this
is the default), <code>addIfDifferent</code>, <code>add</code>, <code>replace</code> or <code>doNothing</code>.</p></div>
@@ -993,15 +1014,15 @@ is the default), <code>addIfDifferent</code>, <code>add</code>, <code>replace</c
trailer with the same (&lt;token&gt;, &lt;value&gt;) pair is above or below the line
where the new trailer will be added.</p></div>
<div class="paragraph"><p>With <code>addIfDifferent</code>, a new trailer will be added only if no trailer
-with the same (&lt;token&gt;, &lt;value&gt;) pair is already in the message.</p></div>
+with the same (&lt;token&gt;, &lt;value&gt;) pair is already in the input.</p></div>
<div class="paragraph"><p>With <code>add</code>, a new trailer will be added, even if some trailers with
-the same (&lt;token&gt;, &lt;value&gt;) pair are already in the message.</p></div>
+the same (&lt;token&gt;, &lt;value&gt;) pair are already in the input.</p></div>
<div class="paragraph"><p>With <code>replace</code>, an existing trailer with the same &lt;token&gt; will be
deleted and the new trailer will be added. The deleted trailer will be
the closest one (with the same &lt;token&gt;) to the place where the new one
will be added.</p></div>
<div class="paragraph"><p>With <code>doNothing</code>, nothing will be done; that is no new trailer will be
-added if there is already one with the same &lt;token&gt; in the message.</p></div>
+added if there is already one with the same &lt;token&gt; in the input.</p></div>
</dd>
<dt class="hdlist1">
trailer.ifmissing
@@ -1010,7 +1031,7 @@ trailer.ifmissing
<p>
This option makes it possible to choose what action will be
performed when there is not yet any trailer with the same
- &lt;token&gt; in the message.
+ &lt;token&gt; in the input.
</p>
<div class="paragraph"><p>The valid values for this option are: <code>add</code> (this is the default) and
<code>doNothing</code>.</p></div>
@@ -1066,13 +1087,13 @@ trailer.&lt;token&gt;.command
</dt>
<dd>
<p>
+ Deprecated in favor of <em>trailer.&lt;token&gt;.cmd</em>.
This option behaves in the same way as <em>trailer.&lt;token&gt;.cmd</em>, except
that it doesn&#8217;t pass anything as argument to the specified command.
Instead the first occurrence of substring $ARG is replaced by the
- value that would be passed as argument.
+ &lt;value&gt; that would be passed as argument.
</p>
-<div class="paragraph"><p>The <em>trailer.&lt;token&gt;.command</em> option has been deprecated in favor of
-<em>trailer.&lt;token&gt;.cmd</em> due to the fact that $ARG in the user&#8217;s command is
+<div class="paragraph"><p>Note that $ARG in the user&#8217;s command is
only replaced once and that the original way of replacing $ARG is not safe.</p></div>
<div class="paragraph"><p>When both <em>trailer.&lt;token&gt;.cmd</em> and <em>trailer.&lt;token&gt;.command</em> are given
for the same &lt;token&gt;, <em>trailer.&lt;token&gt;.cmd</em> is used and
@@ -1083,10 +1104,10 @@ trailer.&lt;token&gt;.cmd
</dt>
<dd>
<p>
- This option can be used to specify a shell command that will be called:
+ This option can be used to specify a shell command that will be called
once to automatically add a trailer with the specified &lt;token&gt;, and then
- each time a <em>--trailer &lt;token&gt;=&lt;value&gt;</em> argument to modify the &lt;value&gt; of
- the trailer that this option would produce.
+ called each time a <em>--trailer &lt;token&gt;=&lt;value&gt;</em> argument is specified to
+ modify the &lt;value&gt; of the trailer that this option would produce.
</p>
<div class="paragraph"><p>When the specified command is first called to add a trailer
with the specified &lt;token&gt;, the behavior is as if a special
@@ -1111,7 +1132,7 @@ from the &lt;value&gt; passed in the <em>--trailer &lt;token&gt;=&lt;value&gt;</
<li>
<p>
Configure a <em>sign</em> trailer with a <em>Signed-off-by</em> key, and then
- add two of these trailers to a message:
+ add two of these trailers to a commit message file:
</p>
<div class="listingblock">
<div class="content">
@@ -1119,11 +1140,11 @@ Configure a <em>sign</em> trailer with a <em>Signed-off-by</em> key, and then
$ cat msg.txt
subject
-message
+body text
$ git interpret-trailers --trailer 'sign: Alice &lt;alice@example.com&gt;' --trailer 'sign: Bob &lt;bob@example.com&gt;' &lt;msg.txt
subject
-message
+body text
Signed-off-by: Alice &lt;alice@example.com&gt;
Signed-off-by: Bob &lt;bob@example.com&gt;</code></pre>
@@ -1131,21 +1152,21 @@ Signed-off-by: Bob &lt;bob@example.com&gt;</code></pre>
</li>
<li>
<p>
-Use the <code>--in-place</code> option to edit a message file in place:
+Use the <code>--in-place</code> option to edit a commit message file in place:
</p>
<div class="listingblock">
<div class="content">
<pre><code>$ cat msg.txt
subject
-message
+body text
Signed-off-by: Bob &lt;bob@example.com&gt;
$ git interpret-trailers --trailer 'Acked-by: Alice &lt;alice@example.com&gt;' --in-place msg.txt
$ cat msg.txt
subject
-message
+body text
Signed-off-by: Bob &lt;bob@example.com&gt;
Acked-by: Alice &lt;alice@example.com&gt;</code></pre>
@@ -1174,7 +1195,7 @@ Configure a <em>sign</em> trailer with a command to automatically add a
<pre><code>$ cat msg1.txt
subject
-message
+body text
$ git config trailer.sign.key "Signed-off-by: "
$ git config trailer.sign.ifmissing add
$ git config trailer.sign.ifexists doNothing
@@ -1182,19 +1203,19 @@ $ git config trailer.sign.cmd 'echo "$(git config user.name) &lt;$(git config us
$ git interpret-trailers --trailer sign &lt;msg1.txt
subject
-message
+body text
Signed-off-by: Bob &lt;bob@example.com&gt;
$ cat msg2.txt
subject
-message
+body text
Signed-off-by: Alice &lt;alice@example.com&gt;
$ git interpret-trailers --trailer sign &lt;msg2.txt
subject
-message
+body text
Signed-off-by: Alice &lt;alice@example.com&gt;</code></pre>
</div></div>
@@ -1228,14 +1249,14 @@ test -n "$1" &amp;&amp; git log --author="$1" --pretty="%an &lt;%ae&gt;" -1 || t
$ cat msg.txt
subject
-message
+body text
$ git config trailer.help.key "Helped-by: "
$ git config trailer.help.ifExists "addIfDifferentNeighbor"
$ git config trailer.help.cmd "~/bin/glog-find-author"
$ git interpret-trailers --trailer="help:Junio" --trailer="help:Couder" &lt;msg.txt
subject
-message
+body text
Helped-by: Junio C Hamano &lt;gitster@pobox.com&gt;
Helped-by: Christian Couder &lt;christian.couder@gmail.com&gt;</code></pre>
@@ -1255,14 +1276,14 @@ test -n "$1" &amp;&amp; git log --grep "$1" --pretty=reference -1 || true
$ cat msg.txt
subject
-message
+body text
$ git config trailer.ref.key "Reference-to: "
$ git config trailer.ref.ifExists "replace"
$ git config trailer.ref.cmd "~/bin/glog-grep"
$ git interpret-trailers --trailer="ref:Add copyright notices." &lt;msg.txt
subject
-message
+body text
Reference-to: 8bc9a0c769 (Add copyright notices., 2005-04-07)</code></pre>
</div></div>
@@ -1277,7 +1298,7 @@ Configure a <em>see</em> trailer with a command to show the subject of a
<pre><code>$ cat msg.txt
subject
-message
+body text
see: HEAD~2
$ cat ~/bin/glog-ref
@@ -1290,7 +1311,7 @@ $ git config trailer.see.cmd "glog-ref"
$ git interpret-trailers --trailer=see &lt;msg.txt
subject
-message
+body text
See-also: fe3187489d69c4 (subject of related commit)</code></pre>
</div></div>
@@ -1343,7 +1364,7 @@ $ chmod +x .git/hooks/commit-msg</code></pre>
<div id="footer">
<div id="footer-text">
Last updated
- 2023-05-15 16:02:03 PDT
+ 2023-06-23 13:24:09 PDT
</div>
</div>
</body>
diff --git a/git-interpret-trailers.txt b/git-interpret-trailers.txt
index 4b97f812b..55d896146 100644
--- a/git-interpret-trailers.txt
+++ b/git-interpret-trailers.txt
@@ -14,21 +14,38 @@ SYNOPSIS
DESCRIPTION
-----------
-Help parsing or adding 'trailers' lines, that look similar to RFC 822 e-mail
+Add or parse 'trailer' lines that look similar to RFC 822 e-mail
headers, at the end of the otherwise free-form part of a commit
-message.
+message. For example, in the following commit message
-This command reads some patches or commit messages from either the
-<file> arguments or the standard input if no <file> is specified. If
-`--parse` is specified, the output consists of the parsed trailers.
+------------------------------------------------
+subject
+
+Lorem ipsum dolor sit amet, consectetur adipiscing elit.
+
+Signed-off-by: Alice <alice@example.com>
+Signed-off-by: Bob <bob@example.com>
+------------------------------------------------
+
+the last two lines starting with "Signed-off-by" are trailers.
+This command reads commit messages from either the
+<file> arguments or the standard input if no <file> is specified.
+If `--parse` is specified, the output consists of the parsed trailers.
Otherwise, this command applies the arguments passed using the
-`--trailer` option, if any, to the commit message part of each input
-file. The result is emitted on the standard output.
+`--trailer` option, if any, to each input file. The result is emitted on the
+standard output.
+
+This command can also operate on the output of linkgit:git-format-patch[1],
+which is more elaborate than a plain commit message. Namely, such output
+includes a commit message (as above), a "---" divider line, and a patch part.
+For these inputs, the divider and patch parts are not modified by
+this command and are emitted as is on the output, unless
+`--no-divider` is specified.
Some configuration variables control the way the `--trailer` arguments
-are applied to each commit message and the way any existing trailer in
-the commit message is changed. They also make it possible to
+are applied to each input and the way any existing trailer in
+the input is changed. They also make it possible to
automatically add some trailers.
By default, a '<token>=<value>' or '<token>:<value>' argument given
@@ -36,41 +53,46 @@ using `--trailer` will be appended after the existing trailers only if
the last trailer has a different (<token>, <value>) pair (or if there
is no existing trailer). The <token> and <value> parts will be trimmed
to remove starting and trailing whitespace, and the resulting trimmed
-<token> and <value> will appear in the message like this:
+<token> and <value> will appear in the output like this:
------------------------------------------------
token: value
------------------------------------------------
This means that the trimmed <token> and <value> will be separated by
-`': '` (one colon followed by one space).
+`': '` (one colon followed by one space). For convenience, the <token> can be a
+shortened string key (e.g., "sign") instead of the full string which should
+appear before the separator on the output (e.g., "Signed-off-by"). This can be
+configured using the 'trailer.<token>.key' configuration variable.
By default the new trailer will appear at the end of all the existing
trailers. If there is no existing trailer, the new trailer will appear
-after the commit message part of the output, and, if there is no line
-with only spaces at the end of the commit message part, one blank line
-will be added before the new trailer.
+at the end of the input. A blank line will be added before the new
+trailer if there isn't one already.
-Existing trailers are extracted from the input message by looking for
+Existing trailers are extracted from the input by looking for
a group of one or more lines that (i) is all trailers, or (ii) contains at
least one Git-generated or user-configured trailer and consists of at
least 25% trailers.
The group must be preceded by one or more empty (or whitespace-only) lines.
-The group must either be at the end of the message or be the last
+The group must either be at the end of the input or be the last
non-whitespace lines before a line that starts with '---' (followed by a
-space or the end of the line). Such three minus signs start the patch
-part of the message. See also `--no-divider` below.
+space or the end of the line).
When reading trailers, there can be no whitespace before or inside the
-token, but any number of regular space and tab characters are allowed
-between the token and the separator. There can be whitespaces before,
-inside or after the value. The value may be split over multiple lines
+<token>, but any number of regular space and tab characters are allowed
+between the <token> and the separator. There can be whitespaces before,
+inside or after the <value>. The <value> may be split over multiple lines
with each subsequent line starting with at least one whitespace, like
-the "folding" in RFC 822.
+the "folding" in RFC 822. Example:
+
+------------------------------------------------
+token: This is a very long value, with spaces and
+ newlines in it.
+------------------------------------------------
-Note that 'trailers' do not follow and are not intended to follow many
-rules for RFC 822 headers. For example they do not follow
-the encoding rules and probably many other rules.
+Note that trailers do not follow (nor are they intended to follow) many of the
+rules for RFC 822 headers. For example they do not follow the encoding rule.
OPTIONS
-------
@@ -79,12 +101,12 @@ OPTIONS
--trim-empty::
If the <value> part of any trailer contains only whitespace,
- the whole trailer will be removed from the resulting message.
+ the whole trailer will be removed from the output.
This applies to existing trailers as well as new trailers.
--trailer <token>[(=|:)<value>]::
Specify a (<token>, <value>) pair that should be applied as a
- trailer to the input messages. See the description of this
+ trailer to the inputs. See the description of this
command.
--where <placement>::
@@ -98,7 +120,7 @@ OPTIONS
--if-exists <action>::
--no-if-exists::
Specify what action will be performed when there is already at
- least one trailer with the same <token> in the message. A setting
+ least one trailer with the same <token> in the input. A setting
provided with '--if-exists' overrides all configuration variables
and applies to all '--trailer' options until the next occurrence of
'--if-exists' or '--no-if-exists'. Possible actions are `addIfDifferent`,
@@ -107,7 +129,7 @@ OPTIONS
--if-missing <action>::
--no-if-missing::
Specify what action will be performed when there is no other
- trailer with the same <token> in the message. A setting
+ trailer with the same <token> in the input. A setting
provided with '--if-missing' overrides all configuration variables
and applies to all '--trailer' options until the next occurrence of
'--if-missing' or '--no-if-missing'. Possible actions are `doNothing`
@@ -174,7 +196,7 @@ first trailer with the same <token>.
trailer.ifexists::
This option makes it possible to choose what action will be
performed when there is already at least one trailer with the
- same <token> in the message.
+ same <token> in the input.
+
The valid values for this option are: `addIfDifferentNeighbor` (this
is the default), `addIfDifferent`, `add`, `replace` or `doNothing`.
@@ -184,10 +206,10 @@ trailer with the same (<token>, <value>) pair is above or below the line
where the new trailer will be added.
+
With `addIfDifferent`, a new trailer will be added only if no trailer
-with the same (<token>, <value>) pair is already in the message.
+with the same (<token>, <value>) pair is already in the input.
+
With `add`, a new trailer will be added, even if some trailers with
-the same (<token>, <value>) pair are already in the message.
+the same (<token>, <value>) pair are already in the input.
+
With `replace`, an existing trailer with the same <token> will be
deleted and the new trailer will be added. The deleted trailer will be
@@ -195,12 +217,12 @@ the closest one (with the same <token>) to the place where the new one
will be added.
+
With `doNothing`, nothing will be done; that is no new trailer will be
-added if there is already one with the same <token> in the message.
+added if there is already one with the same <token> in the input.
trailer.ifmissing::
This option makes it possible to choose what action will be
performed when there is not yet any trailer with the same
- <token> in the message.
+ <token> in the input.
+
The valid values for this option are: `add` (this is the default) and
`doNothing`.
@@ -235,13 +257,13 @@ trailer.<token>.ifmissing::
that option for trailers with the specified <token>.
trailer.<token>.command::
+ Deprecated in favor of 'trailer.<token>.cmd'.
This option behaves in the same way as 'trailer.<token>.cmd', except
that it doesn't pass anything as argument to the specified command.
Instead the first occurrence of substring $ARG is replaced by the
- value that would be passed as argument.
+ <value> that would be passed as argument.
+
-The 'trailer.<token>.command' option has been deprecated in favor of
-'trailer.<token>.cmd' due to the fact that $ARG in the user's command is
+Note that $ARG in the user's command is
only replaced once and that the original way of replacing $ARG is not safe.
+
When both 'trailer.<token>.cmd' and 'trailer.<token>.command' are given
@@ -249,10 +271,10 @@ for the same <token>, 'trailer.<token>.cmd' is used and
'trailer.<token>.command' is ignored.
trailer.<token>.cmd::
- This option can be used to specify a shell command that will be called:
+ This option can be used to specify a shell command that will be called
once to automatically add a trailer with the specified <token>, and then
- each time a '--trailer <token>=<value>' argument to modify the <value> of
- the trailer that this option would produce.
+ called each time a '--trailer <token>=<value>' argument is specified to
+ modify the <value> of the trailer that this option would produce.
+
When the specified command is first called to add a trailer
with the specified <token>, the behavior is as if a special
@@ -272,37 +294,37 @@ EXAMPLES
--------
* Configure a 'sign' trailer with a 'Signed-off-by' key, and then
- add two of these trailers to a message:
+ add two of these trailers to a commit message file:
+
------------
$ git config trailer.sign.key "Signed-off-by"
$ cat msg.txt
subject
-message
+body text
$ git interpret-trailers --trailer 'sign: Alice <alice@example.com>' --trailer 'sign: Bob <bob@example.com>' <msg.txt
subject
-message
+body text
Signed-off-by: Alice <alice@example.com>
Signed-off-by: Bob <bob@example.com>
------------
-* Use the `--in-place` option to edit a message file in place:
+* Use the `--in-place` option to edit a commit message file in place:
+
------------
$ cat msg.txt
subject
-message
+body text
Signed-off-by: Bob <bob@example.com>
$ git interpret-trailers --trailer 'Acked-by: Alice <alice@example.com>' --in-place msg.txt
$ cat msg.txt
subject
-message
+body text
Signed-off-by: Bob <bob@example.com>
Acked-by: Alice <alice@example.com>
@@ -325,7 +347,7 @@ $ git interpret-trailers --trailer 'Cc: Alice <alice@example.com>' --trailer 'Re
$ cat msg1.txt
subject
-message
+body text
$ git config trailer.sign.key "Signed-off-by: "
$ git config trailer.sign.ifmissing add
$ git config trailer.sign.ifexists doNothing
@@ -333,19 +355,19 @@ $ git config trailer.sign.cmd 'echo "$(git config user.name) <$(git config user.
$ git interpret-trailers --trailer sign <msg1.txt
subject
-message
+body text
Signed-off-by: Bob <bob@example.com>
$ cat msg2.txt
subject
-message
+body text
Signed-off-by: Alice <alice@example.com>
$ git interpret-trailers --trailer sign <msg2.txt
subject
-message
+body text
Signed-off-by: Alice <alice@example.com>
------------
@@ -373,14 +395,14 @@ test -n "$1" && git log --author="$1" --pretty="%an <%ae>" -1 || true
$ cat msg.txt
subject
-message
+body text
$ git config trailer.help.key "Helped-by: "
$ git config trailer.help.ifExists "addIfDifferentNeighbor"
$ git config trailer.help.cmd "~/bin/glog-find-author"
$ git interpret-trailers --trailer="help:Junio" --trailer="help:Couder" <msg.txt
subject
-message
+body text
Helped-by: Junio C Hamano <gitster@pobox.com>
Helped-by: Christian Couder <christian.couder@gmail.com>
@@ -397,14 +419,14 @@ test -n "$1" && git log --grep "$1" --pretty=reference -1 || true
$ cat msg.txt
subject
-message
+body text
$ git config trailer.ref.key "Reference-to: "
$ git config trailer.ref.ifExists "replace"
$ git config trailer.ref.cmd "~/bin/glog-grep"
$ git interpret-trailers --trailer="ref:Add copyright notices." <msg.txt
subject
-message
+body text
Reference-to: 8bc9a0c769 (Add copyright notices., 2005-04-07)
------------
@@ -416,7 +438,7 @@ Reference-to: 8bc9a0c769 (Add copyright notices., 2005-04-07)
$ cat msg.txt
subject
-message
+body text
see: HEAD~2
$ cat ~/bin/glog-ref
@@ -429,7 +451,7 @@ $ git config trailer.see.cmd "glog-ref"
$ git interpret-trailers --trailer=see <msg.txt
subject
-message
+body text
See-also: fe3187489d69c4 (subject of related commit)
------------
diff --git a/git-ls-tree.html b/git-ls-tree.html
index a330dd096..e20b965a0 100644
--- a/git-ls-tree.html
+++ b/git-ls-tree.html
@@ -904,9 +904,9 @@ the behaviour is similar to that of "/bin/ls" in that the <em>&lt;path&gt;</em>
<p>
A string that interpolates <code>%(fieldname)</code> from the result
being shown. It also interpolates <code>%%</code> to <code>%</code>, and
- <code>%xx</code> where <code>xx</code> are hex digits interpolates to character
- with hex code <code>xx</code>; for example <code>%00</code> interpolates to
- <code>\0</code> (NUL), <code>%09</code> to <code>\t</code> (TAB) and <code>%0a</code> to <code>\n</code> (LF).
+ <code>%xNN</code> where <code>NN</code> are hex digits interpolates to character
+ with hex code <code>NN</code>; for example <code>%x00</code> interpolates to
+ <code>\0</code> (NUL), <code>%x09</code> to <code>\t</code> (TAB) and <code>%x0a</code> to <code>\n</code> (LF).
When specified, <code>--format</code> cannot be combined with other
format-altering options, including <code>--long</code>, <code>--name-only</code>
and <code>--object-only</code>.
@@ -970,7 +970,7 @@ can execute with a specific "--format" like</p></div>
<h2 id="_field_names">FIELD NAMES</h2>
<div class="sectionbody">
<div class="paragraph"><p>Various values from structured fields can be used to interpolate
-into the resulting output. For each outputing line, the following
+into the resulting output. For each outputting line, the following
names can be used:</p></div>
<div class="dlist"><dl>
<dt class="hdlist1">
@@ -1028,7 +1028,7 @@ path
<div id="footer">
<div id="footer-text">
Last updated
- 2022-04-08 14:16:04 PDT
+ 2023-06-23 13:24:09 PDT
</div>
</div>
</body>
diff --git a/git-ls-tree.txt b/git-ls-tree.txt
index 0240adb8e..6572095d8 100644
--- a/git-ls-tree.txt
+++ b/git-ls-tree.txt
@@ -86,9 +86,9 @@ OPTIONS
--format=<format>::
A string that interpolates `%(fieldname)` from the result
being shown. It also interpolates `%%` to `%`, and
- `%xx` where `xx` are hex digits interpolates to character
- with hex code `xx`; for example `%00` interpolates to
- `\0` (NUL), `%09` to `\t` (TAB) and `%0a` to `\n` (LF).
+ `%xNN` where `NN` are hex digits interpolates to character
+ with hex code `NN`; for example `%x00` interpolates to
+ `\0` (NUL), `%x09` to `\t` (TAB) and `%x0a` to `\n` (LF).
When specified, `--format` cannot be combined with other
format-altering options, including `--long`, `--name-only`
and `--object-only`.
@@ -145,7 +145,7 @@ FIELD NAMES
-----------
Various values from structured fields can be used to interpolate
-into the resulting output. For each outputing line, the following
+into the resulting output. For each outputting line, the following
names can be used:
objectmode::
diff --git a/git-merge.html b/git-merge.html
index 434551199..ade5c345e 100644
--- a/git-merge.html
+++ b/git-merge.html
@@ -1301,12 +1301,20 @@ For conflicting paths, the index file records up to three
versions: stage 1 stores the version from the common ancestor,
stage 2 from <code>HEAD</code>, and stage 3 from <code>MERGE_HEAD</code> (you
can inspect the stages with <code>git ls-files -u</code>). The working
- tree files contain the result of the "merge" program; i.e. 3-way
+ tree files contain the result of the merge operation; i.e. 3-way
merge results with familiar conflict markers <code>&lt;&lt;&lt;</code> <code>===</code> <code>&gt;&gt;&gt;</code>.
</p>
</li>
<li>
<p>
+A special ref <code>AUTO_MERGE</code> is written, pointing to a tree
+ corresponding to the current content of the working tree (including
+ conflict markers for textual conflicts). Note that this ref is only
+ written when the <em>ort</em> merge strategy is used (the default).
+</p>
+</li>
+<li>
+<p>
No other changes are made. In particular, the local
modifications you had before you started merge will stay the
same and the index entries for them stay as they were,
@@ -1454,7 +1462,8 @@ Use a mergetool. <code>git mergetool</code> to launch a graphical
<p>
Look at the diffs. <code>git diff</code> will show a three-way diff,
highlighting changes from both the <code>HEAD</code> and <code>MERGE_HEAD</code>
- versions.
+ versions. <code>git diff AUTO_MERGE</code> will show what changes you&#8217;ve
+ made so far to resolve textual conflicts.
</p>
</li>
<li>
@@ -2327,7 +2336,7 @@ merge.&lt;driver&gt;.recursive
<div id="footer">
<div id="footer-text">
Last updated
- 2023-01-21 17:52:14 PST
+ 2023-06-23 13:24:09 PDT
</div>
</div>
</body>
diff --git a/git-merge.txt b/git-merge.txt
index 0aeff572a..8625c5cb0 100644
--- a/git-merge.txt
+++ b/git-merge.txt
@@ -194,9 +194,13 @@ happens:
versions: stage 1 stores the version from the common ancestor,
stage 2 from `HEAD`, and stage 3 from `MERGE_HEAD` (you
can inspect the stages with `git ls-files -u`). The working
- tree files contain the result of the "merge" program; i.e. 3-way
+ tree files contain the result of the merge operation; i.e. 3-way
merge results with familiar conflict markers `<<<` `===` `>>>`.
-5. No other changes are made. In particular, the local
+5. A special ref `AUTO_MERGE` is written, pointing to a tree
+ corresponding to the current content of the working tree (including
+ conflict markers for textual conflicts). Note that this ref is only
+ written when the 'ort' merge strategy is used (the default).
+6. No other changes are made. In particular, the local
modifications you had before you started merge will stay the
same and the index entries for them stay as they were,
i.e. matching `HEAD`.
@@ -336,7 +340,8 @@ You can work through the conflict with a number of tools:
* Look at the diffs. `git diff` will show a three-way diff,
highlighting changes from both the `HEAD` and `MERGE_HEAD`
- versions.
+ versions. `git diff AUTO_MERGE` will show what changes you've
+ made so far to resolve textual conflicts.
* Look at the diffs from each branch. `git log --merge -p <path>`
will show diffs first for the `HEAD` version and then the
diff --git a/git-mktag.html b/git-mktag.html
index 4b3a9bc0e..835253a7b 100644
--- a/git-mktag.html
+++ b/git-mktag.html
@@ -774,7 +774,7 @@ would run by default in that all <code>fsck.&lt;msg-id&gt;</code> messages are p
from warnings to errors (so e.g. a missing "tagger" line is an error).</p></div>
<div class="paragraph"><p>Extra headers in the object are also an error under mktag, but ignored
by <a href="git-fsck.html">git-fsck(1)</a>. This extra check can be turned off by setting
-the appropriate <code>fsck.&lt;msg-id&gt;</code> varible:</p></div>
+the appropriate <code>fsck.&lt;msg-id&gt;</code> variable:</p></div>
<div class="literalblock">
<div class="content">
<pre><code>git -c fsck.extraHeaderEntry=ignore mktag &lt;my-tag-with-headers</code></pre>
@@ -828,7 +828,7 @@ care about, but that can be verified with gpg.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2021-05-06 21:22:01 PDT
+ 2023-06-23 13:24:09 PDT
</div>
</div>
</body>
diff --git a/git-mktag.txt b/git-mktag.txt
index 466a69751..b2a2e80d4 100644
--- a/git-mktag.txt
+++ b/git-mktag.txt
@@ -33,7 +33,7 @@ from warnings to errors (so e.g. a missing "tagger" line is an error).
Extra headers in the object are also an error under mktag, but ignored
by linkgit:git-fsck[1]. This extra check can be turned off by setting
-the appropriate `fsck.<msg-id>` varible:
+the appropriate `fsck.<msg-id>` variable:
git -c fsck.extraHeaderEntry=ignore mktag <my-tag-with-headers
diff --git a/git-pull.html b/git-pull.html
index 5029d9a18..044fe1f89 100644
--- a/git-pull.html
+++ b/git-pull.html
@@ -1836,7 +1836,7 @@ config file would appear like this:</p></div>
<div class="paragraph"><p>The <code>&lt;pushurl&gt;</code> is used for pushes only. It is optional and defaults
to <code>&lt;URL&gt;</code>. Pushing to a remote affects all defined pushurls or to all
defined urls if no pushurls are defined. Fetch, however, will only
-fetch from the first defined url if muliple urls are defined.</p></div>
+fetch from the first defined url if multiple urls are defined.</p></div>
</div>
<div class="sect2">
<h3 id="_named_file_in_code_git_dir_remotes_code">Named file in <code>$GIT_DIR/remotes</code></h3>
diff --git a/git-push.html b/git-push.html
index 4d7347eda..206a44b8c 100644
--- a/git-push.html
+++ b/git-push.html
@@ -1503,7 +1503,7 @@ config file would appear like this:</p></div>
<div class="paragraph"><p>The <code>&lt;pushurl&gt;</code> is used for pushes only. It is optional and defaults
to <code>&lt;URL&gt;</code>. Pushing to a remote affects all defined pushurls or to all
defined urls if no pushurls are defined. Fetch, however, will only
-fetch from the first defined url if muliple urls are defined.</p></div>
+fetch from the first defined url if multiple urls are defined.</p></div>
</div>
<div class="sect2">
<h3 id="_named_file_in_code_git_dir_remotes_code">Named file in <code>$GIT_DIR/remotes</code></h3>
diff --git a/git-remote-helpers.html b/git-remote-helpers.html
index 33bbdfbc6..677dd71ad 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-06-13</span>
+<span id="revdate">2023-06-23</span>
</div>
<div id="content">
<div id="preamble">
diff --git a/git-rev-parse.html b/git-rev-parse.html
index bcff2e06e..920f8c667 100644
--- a/git-rev-parse.html
+++ b/git-rev-parse.html
@@ -1368,8 +1368,9 @@ characters and to avoid word splitting.</td>
<li>
<p>
If <em>$GIT_DIR/&lt;refname&gt;</em> exists, that is what you mean (this is usually
- useful only for <code>HEAD</code>, <code>FETCH_HEAD</code>, <code>ORIG_HEAD</code>, <code>MERGE_HEAD</code>
- and <code>CHERRY_PICK_HEAD</code>);
+ useful only for <code>HEAD</code>, <code>FETCH_HEAD</code>, <code>ORIG_HEAD</code>, <code>MERGE_HEAD</code>,
+ <code>REBASE_HEAD</code>, <code>REVERT_HEAD</code>, <code>CHERRY_PICK_HEAD</code>, <code>BISECT_HEAD</code>
+ and <code>AUTO_MERGE</code>);
</p>
</li>
<li>
@@ -1396,24 +1397,97 @@ otherwise, <em>refs/remotes/&lt;refname&gt;</em> if it exists;
<p>
otherwise, <em>refs/remotes/&lt;refname&gt;/HEAD</em> if it exists.
</p>
-<div class="paragraph"><p><code>HEAD</code> names the commit on which you based the changes in the working tree.
-<code>FETCH_HEAD</code> records the branch which you fetched from a remote repository
-with your last <code>git fetch</code> invocation.
-<code>ORIG_HEAD</code> is created by commands that move your <code>HEAD</code> in a drastic
-way (<code>git am</code>, <code>git merge</code>, <code>git rebase</code>, <code>git reset</code>),
-to record the position of the <code>HEAD</code> before their operation, so that
-you can easily change the tip of the branch back to the state before you ran
-them.
-<code>MERGE_HEAD</code> records the commit(s) which you are merging into your branch
-when you run <code>git merge</code>.
-<code>CHERRY_PICK_HEAD</code> records the commit which you are cherry-picking
-when you run <code>git cherry-pick</code>.</p></div>
+</li>
+</ol></div>
+<div class="dlist"><dl>
+<dt class="hdlist1">
+<code>HEAD</code>
+</dt>
+<dd>
+<p>
+ names the commit on which you based the changes in the working tree.
+</p>
+</dd>
+<dt class="hdlist1">
+<code>FETCH_HEAD</code>
+</dt>
+<dd>
+<p>
+ records the branch which you fetched from a remote repository with
+ your last <code>git fetch</code> invocation.
+</p>
+</dd>
+<dt class="hdlist1">
+<code>ORIG_HEAD</code>
+</dt>
+<dd>
+<p>
+ is created by commands that move your <code>HEAD</code> in a drastic way (<code>git
+ am</code>, <code>git merge</code>, <code>git rebase</code>, <code>git reset</code>), to record the position
+ of the <code>HEAD</code> before their operation, so that you can easily change
+ the tip of the branch back to the state before you ran them.
+</p>
+</dd>
+<dt class="hdlist1">
+<code>MERGE_HEAD</code>
+</dt>
+<dd>
+<p>
+ records the commit(s) which you are merging into your branch when you
+ run <code>git merge</code>.
+</p>
+</dd>
+<dt class="hdlist1">
+<code>REBASE_HEAD</code>
+</dt>
+<dd>
+<p>
+ during a rebase, records the commit at which the operation is
+ currently stopped, either because of conflicts or an <code>edit</code> command in
+ an interactive rebase.
+</p>
+</dd>
+<dt class="hdlist1">
+<code>REVERT_HEAD</code>
+</dt>
+<dd>
+<p>
+ records the commit which you are reverting when you run <code>git revert</code>.
+</p>
+</dd>
+<dt class="hdlist1">
+<code>CHERRY_PICK_HEAD</code>
+</dt>
+<dd>
+<p>
+ records the commit which you are cherry-picking when you run <code>git
+ cherry-pick</code>.
+</p>
+</dd>
+<dt class="hdlist1">
+<code>BISECT_HEAD</code>
+</dt>
+<dd>
+<p>
+ records the current commit to be tested when you run <code>git bisect
+ --no-checkout</code>.
+</p>
+</dd>
+<dt class="hdlist1">
+<code>AUTO_MERGE</code>
+</dt>
+<dd>
+<p>
+ records a tree object corresponding to the state the
+ <em>ort</em> merge strategy wrote to the working tree when a merge operation
+ resulted in conflicts.
+</p>
+</dd>
+</dl></div>
<div class="paragraph"><p>Note that any of the <em>refs/*</em> cases above may come either from
the <code>$GIT_DIR/refs</code> directory or from the <code>$GIT_DIR/packed-refs</code> file.
While the ref name encoding is unspecified, UTF-8 is preferred as
some output processing may assume ref names in UTF-8.</p></div>
-</li>
-</ol></div>
</dd>
<dt class="hdlist1">
<em>@</em>
diff --git a/git-sparse-checkout.html b/git-sparse-checkout.html
index b6ec84be5..56f600cc5 100644
--- a/git-sparse-checkout.html
+++ b/git-sparse-checkout.html
@@ -1096,7 +1096,7 @@ for non-cone users? If it suggests paths, is it exacerbating the
problem above? Also, if it suggests paths, what if the user has a
file or directory that begins with either a '!' or '#' or has a '*',
'\', '?', '[', or ']' in its name? And if it suggests paths, will
-it complete "/pro" to "/proc" (in the root filesytem) rather than to
+it complete "/pro" to "/proc" (in the root filesystem) rather than to
"/progress.txt" in the current directory? (Note that users are
likely to want to start paths with a leading '/' in non-cone mode,
for the same reason that .gitignore files often have one.)
@@ -1312,7 +1312,7 @@ of these restrictions.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2023-04-11 13:51:23 PDT
+ 2023-06-23 13:24:09 PDT
</div>
</div>
</body>
diff --git a/git-sparse-checkout.txt b/git-sparse-checkout.txt
index 53dc17aa7..529a8edd9 100644
--- a/git-sparse-checkout.txt
+++ b/git-sparse-checkout.txt
@@ -286,7 +286,7 @@ patterns in non-cone mode has a number of shortcomings:
problem above? Also, if it suggests paths, what if the user has a
file or directory that begins with either a '!' or '#' or has a '*',
'\', '?', '[', or ']' in its name? And if it suggests paths, will
- it complete "/pro" to "/proc" (in the root filesytem) rather than to
+ it complete "/pro" to "/proc" (in the root filesystem) rather than to
"/progress.txt" in the current directory? (Note that users are
likely to want to start paths with a leading '/' in non-cone mode,
for the same reason that .gitignore files often have one.)
diff --git a/git-stash.html b/git-stash.html
index dddd48949..3b9cfbe9c 100644
--- a/git-stash.html
+++ b/git-stash.html
@@ -1240,7 +1240,7 @@ only the commit ends-up being in the stash and not on the current branch.
<pre><code># ... hack hack hack ...
$ git add --patch foo # add unrelated changes to the index
$ git stash push --staged # save these changes to the stash
-# ... hack hack hack, finish curent changes ...
+# ... hack hack hack, finish current changes ...
$ git commit -m 'Massive' # commit fully tested changes
$ git switch fixup-branch # switch to another branch
$ git stash pop # to finish work on the saved changes</code></pre>
@@ -1327,7 +1327,7 @@ stash.showStat
<div id="footer">
<div id="footer-text">
Last updated
- 2022-10-28 11:53:56 PDT
+ 2023-06-23 13:24:09 PDT
</div>
</div>
</body>
diff --git a/git-stash.txt b/git-stash.txt
index f4bb6114d..06fb7f1d1 100644
--- a/git-stash.txt
+++ b/git-stash.txt
@@ -366,7 +366,7 @@ only the commit ends-up being in the stash and not on the current branch.
# ... hack hack hack ...
$ git add --patch foo # add unrelated changes to the index
$ git stash push --staged # save these changes to the stash
-# ... hack hack hack, finish curent changes ...
+# ... hack hack hack, finish current changes ...
$ git commit -m 'Massive' # commit fully tested changes
$ git switch fixup-branch # switch to another branch
$ git stash pop # to finish work on the saved changes
diff --git a/git-worktree.html b/git-worktree.html
index 665388379..8f05cc8b6 100644
--- a/git-worktree.html
+++ b/git-worktree.html
@@ -750,7 +750,7 @@ git-worktree(1) Manual Page
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>git worktree add</em> [-f] [--detach] [--checkout] [--lock [--reason &lt;string&gt;]]
- [-b &lt;new-branch&gt;] &lt;path&gt; [&lt;commit-ish&gt;]
+ [--orphan] [(-b | -B) &lt;new-branch&gt;] &lt;path&gt; [&lt;commit-ish&gt;]
<em>git worktree list</em> [-v | --porcelain [-z]]
<em>git worktree lock</em> [--reason &lt;string&gt;] &lt;worktree&gt;
<em>git worktree move</em> &lt;worktree&gt; &lt;new-path&gt;
@@ -837,6 +837,15 @@ exist, a new branch based on <code>HEAD</code> is automatically created as if
<code>-b &lt;branch&gt;</code> was given. If <code>&lt;branch&gt;</code> does exist, it will be checked out
in the new worktree, if it&#8217;s not checked out anywhere else, otherwise the
command will refuse to create the worktree (unless <code>--force</code> is used).</p></div>
+<div class="paragraph"><p>If <code>&lt;commit-ish&gt;</code> is omitted, neither <code>--detach</code>, or <code>--orphan</code> is
+used, and there are no valid local branches (or remote branches if
+<code>--guess-remote</code> is specified) then, as a convenience, the new worktree is
+associated with a new orphan branch named <code>&lt;branch&gt;</code> (after
+<code>$(basename &lt;path&gt;)</code> if neither <code>-b</code> or <code>-B</code> is used) as if <code>--orphan</code> was
+passed to the command. In the event the repository has a remote and
+<code>--guess-remote</code> is used, but no remote or local branches exist, then the
+command fails with a warning reminding the user to fetch from their remote
+first (or override by using <code>-f/--force</code>).</p></div>
</dd>
<dt class="hdlist1">
list
@@ -1039,6 +1048,15 @@ To remove a locked worktree, specify <code>--force</code> twice.</p></div>
</p>
</dd>
<dt class="hdlist1">
+--orphan
+</dt>
+<dd>
+<p>
+ With <code>add</code>, make the new worktree and index empty, associating
+ the worktree with a new orphan/unborn branch named <code>&lt;new-branch&gt;</code>.
+</p>
+</dd>
+<dt class="hdlist1">
--porcelain
</dt>
<dd>
@@ -1380,7 +1398,7 @@ checkouts of a superproject.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2022-10-28 11:53:56 PDT
+ 2023-06-23 13:24:09 PDT
</div>
</div>
</body>
diff --git a/git-worktree.txt b/git-worktree.txt
index 063d6eeb9..a4fbf5e83 100644
--- a/git-worktree.txt
+++ b/git-worktree.txt
@@ -10,7 +10,7 @@ SYNOPSIS
--------
[verse]
'git worktree add' [-f] [--detach] [--checkout] [--lock [--reason <string>]]
- [-b <new-branch>] <path> [<commit-ish>]
+ [--orphan] [(-b | -B) <new-branch>] <path> [<commit-ish>]
'git worktree list' [-v | --porcelain [-z]]
'git worktree lock' [--reason <string>] <worktree>
'git worktree move' <worktree> <new-path>
@@ -95,6 +95,16 @@ exist, a new branch based on `HEAD` is automatically created as if
`-b <branch>` was given. If `<branch>` does exist, it will be checked out
in the new worktree, if it's not checked out anywhere else, otherwise the
command will refuse to create the worktree (unless `--force` is used).
++
+If `<commit-ish>` is omitted, neither `--detach`, or `--orphan` is
+used, and there are no valid local branches (or remote branches if
+`--guess-remote` is specified) then, as a convenience, the new worktree is
+associated with a new orphan branch named `<branch>` (after
+`$(basename <path>)` if neither `-b` or `-B` is used) as if `--orphan` was
+passed to the command. In the event the repository has a remote and
+`--guess-remote` is used, but no remote or local branches exist, then the
+command fails with a warning reminding the user to fetch from their remote
+first (or override by using `-f/--force`).
list::
@@ -222,6 +232,10 @@ This can also be set up as the default behaviour by using the
With `prune`, do not remove anything; just report what it would
remove.
+--orphan::
+ With `add`, make the new worktree and index empty, associating
+ the worktree with a new orphan/unborn branch named `<new-branch>`.
+
--porcelain::
With `list`, output in an easy-to-parse format for scripts.
This format will remain stable across Git versions and regardless of user
diff --git a/gitcredentials.html b/gitcredentials.html
index cef639fbe..242a1dfbb 100644
--- a/gitcredentials.html
+++ b/gitcredentials.html
@@ -1067,7 +1067,7 @@ appended to its command line, which is one of:</p></div>
</dt>
<dd>
<p>
- Remove a matching credential, if any, from the helper&#8217;s storage.
+ Remove matching credentials, if any, from the helper&#8217;s storage.
</p>
</dd>
</dl></div>
@@ -1110,7 +1110,7 @@ helpers will just ignore the new requests).</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2023-02-27 10:47:08 PST
+ 2023-06-23 13:24:09 PDT
</div>
</div>
</body>
diff --git a/gitcredentials.txt b/gitcredentials.txt
index 100f045bb..65d652dc4 100644
--- a/gitcredentials.txt
+++ b/gitcredentials.txt
@@ -260,7 +260,7 @@ appended to its command line, which is one of:
`erase`::
- Remove a matching credential, if any, from the helper's storage.
+ Remove matching credentials, if any, from the helper's storage.
The details of the credential will be provided on the helper's stdin
stream. The exact format is the same as the input/output format of the
diff --git a/gitrevisions.html b/gitrevisions.html
index 737eda12b..764b805a7 100644
--- a/gitrevisions.html
+++ b/gitrevisions.html
@@ -822,8 +822,9 @@ characters and to avoid word splitting.</td>
<li>
<p>
If <em>$GIT_DIR/&lt;refname&gt;</em> exists, that is what you mean (this is usually
- useful only for <code>HEAD</code>, <code>FETCH_HEAD</code>, <code>ORIG_HEAD</code>, <code>MERGE_HEAD</code>
- and <code>CHERRY_PICK_HEAD</code>);
+ useful only for <code>HEAD</code>, <code>FETCH_HEAD</code>, <code>ORIG_HEAD</code>, <code>MERGE_HEAD</code>,
+ <code>REBASE_HEAD</code>, <code>REVERT_HEAD</code>, <code>CHERRY_PICK_HEAD</code>, <code>BISECT_HEAD</code>
+ and <code>AUTO_MERGE</code>);
</p>
</li>
<li>
@@ -850,24 +851,97 @@ otherwise, <em>refs/remotes/&lt;refname&gt;</em> if it exists;
<p>
otherwise, <em>refs/remotes/&lt;refname&gt;/HEAD</em> if it exists.
</p>
-<div class="paragraph"><p><code>HEAD</code> names the commit on which you based the changes in the working tree.
-<code>FETCH_HEAD</code> records the branch which you fetched from a remote repository
-with your last <code>git fetch</code> invocation.
-<code>ORIG_HEAD</code> is created by commands that move your <code>HEAD</code> in a drastic
-way (<code>git am</code>, <code>git merge</code>, <code>git rebase</code>, <code>git reset</code>),
-to record the position of the <code>HEAD</code> before their operation, so that
-you can easily change the tip of the branch back to the state before you ran
-them.
-<code>MERGE_HEAD</code> records the commit(s) which you are merging into your branch
-when you run <code>git merge</code>.
-<code>CHERRY_PICK_HEAD</code> records the commit which you are cherry-picking
-when you run <code>git cherry-pick</code>.</p></div>
+</li>
+</ol></div>
+<div class="dlist"><dl>
+<dt class="hdlist1">
+<code>HEAD</code>
+</dt>
+<dd>
+<p>
+ names the commit on which you based the changes in the working tree.
+</p>
+</dd>
+<dt class="hdlist1">
+<code>FETCH_HEAD</code>
+</dt>
+<dd>
+<p>
+ records the branch which you fetched from a remote repository with
+ your last <code>git fetch</code> invocation.
+</p>
+</dd>
+<dt class="hdlist1">
+<code>ORIG_HEAD</code>
+</dt>
+<dd>
+<p>
+ is created by commands that move your <code>HEAD</code> in a drastic way (<code>git
+ am</code>, <code>git merge</code>, <code>git rebase</code>, <code>git reset</code>), to record the position
+ of the <code>HEAD</code> before their operation, so that you can easily change
+ the tip of the branch back to the state before you ran them.
+</p>
+</dd>
+<dt class="hdlist1">
+<code>MERGE_HEAD</code>
+</dt>
+<dd>
+<p>
+ records the commit(s) which you are merging into your branch when you
+ run <code>git merge</code>.
+</p>
+</dd>
+<dt class="hdlist1">
+<code>REBASE_HEAD</code>
+</dt>
+<dd>
+<p>
+ during a rebase, records the commit at which the operation is
+ currently stopped, either because of conflicts or an <code>edit</code> command in
+ an interactive rebase.
+</p>
+</dd>
+<dt class="hdlist1">
+<code>REVERT_HEAD</code>
+</dt>
+<dd>
+<p>
+ records the commit which you are reverting when you run <code>git revert</code>.
+</p>
+</dd>
+<dt class="hdlist1">
+<code>CHERRY_PICK_HEAD</code>
+</dt>
+<dd>
+<p>
+ records the commit which you are cherry-picking when you run <code>git
+ cherry-pick</code>.
+</p>
+</dd>
+<dt class="hdlist1">
+<code>BISECT_HEAD</code>
+</dt>
+<dd>
+<p>
+ records the current commit to be tested when you run <code>git bisect
+ --no-checkout</code>.
+</p>
+</dd>
+<dt class="hdlist1">
+<code>AUTO_MERGE</code>
+</dt>
+<dd>
+<p>
+ records a tree object corresponding to the state the
+ <em>ort</em> merge strategy wrote to the working tree when a merge operation
+ resulted in conflicts.
+</p>
+</dd>
+</dl></div>
<div class="paragraph"><p>Note that any of the <em>refs/*</em> cases above may come either from
the <code>$GIT_DIR/refs</code> directory or from the <code>$GIT_DIR/packed-refs</code> file.
While the ref name encoding is unspecified, UTF-8 is preferred as
some output processing may assume ref names in UTF-8.</p></div>
-</li>
-</ol></div>
</dd>
<dt class="hdlist1">
<em>@</em>
diff --git a/gitweb.html b/gitweb.html
index 0bd2ecb3c..d4614f0a0 100644
--- a/gitweb.html
+++ b/gitweb.html
@@ -1434,7 +1434,7 @@ repositories, you can configure Apache like this:</p></div>
</div></div>
<div class="paragraph"><p>The above configuration expects your public repositories to live under
<code>/pub/git</code> and will serve them as <code>http://git.domain.org/dir-under-pub-git</code>,
-both as clonable Git URL and as browseable gitweb interface. If you then
+both as clonable Git URL and as browsable gitweb interface. If you then
start your <a href="git-daemon.html">git-daemon(1)</a> with <code>--base-path=/pub/git --export-all</code>
then you can even use the <code>git://</code> URL with exactly the same path.</p></div>
<div class="paragraph"><p>Setting the environment variable <code>GITWEB_CONFIG</code> will tell gitweb to use the
@@ -1642,7 +1642,7 @@ putting "gitweb" in the subject of email.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2021-10-29 16:18:45 PDT
+ 2023-06-23 13:24:09 PDT
</div>
</div>
</body>
diff --git a/gitweb.txt b/gitweb.txt
index 7cee9d368..af6bf3c45 100644
--- a/gitweb.txt
+++ b/gitweb.txt
@@ -503,7 +503,7 @@ repositories, you can configure Apache like this:
The above configuration expects your public repositories to live under
`/pub/git` and will serve them as `http://git.domain.org/dir-under-pub-git`,
-both as clonable Git URL and as browseable gitweb interface. If you then
+both as clonable Git URL and as browsable gitweb interface. If you then
start your linkgit:git-daemon[1] with `--base-path=/pub/git --export-all`
then you can even use the `git://` URL with exactly the same path.
diff --git a/howto/coordinate-embargoed-releases.html b/howto/coordinate-embargoed-releases.html
index 62f2a103d..1adec8b5c 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-06-13 13:58:23 PDT
+ 2023-06-23 13:24:47 PDT
</div>
</div>
</body>
diff --git a/howto/keep-canonical-history-correct.html b/howto/keep-canonical-history-correct.html
index a37027f95..b10ab5e10 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-06-13</span>
+<span id="revdate">2023-06-23</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-06-13 13:58:23 PDT
+ 2023-06-23 13:24:46 PDT
</div>
</div>
</body>
diff --git a/howto/maintain-git.html b/howto/maintain-git.html
index c37381a16..cf192fa60 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-06-13</span>
+<span id="revdate">2023-06-23</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-06-13 13:58:23 PDT
+ 2023-06-23 13:24:47 PDT
</div>
</div>
</body>
diff --git a/howto/new-command.html b/howto/new-command.html
index 3f3c2e4b7..652157a17 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-06-13</span>
+<span id="revdate">2023-06-23</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-06-13 13:58:21 PDT
+ 2023-06-23 13:24:44 PDT
</div>
</div>
</body>
diff --git a/howto/rebase-from-internal-branch.html b/howto/rebase-from-internal-branch.html
index d5f889907..a84734232 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-06-13</span>
+<span id="revdate">2023-06-23</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-06-13 13:58:23 PDT
+ 2023-06-23 13:24:46 PDT
</div>
</div>
</body>
diff --git a/howto/rebuild-from-update-hook.html b/howto/rebuild-from-update-hook.html
index bf571d654..72616b722 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-06-13</span>
+<span id="revdate">2023-06-23</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-06-13 13:58:23 PDT
+ 2023-06-23 13:24:46 PDT
</div>
</div>
</body>
diff --git a/howto/recover-corrupted-blob-object.html b/howto/recover-corrupted-blob-object.html
index 9450e9984..81cf8f944 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-06-13</span>
+<span id="revdate">2023-06-23</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-06-13 13:58:22 PDT
+ 2023-06-23 13:24:46 PDT
</div>
</div>
</body>
diff --git a/howto/recover-corrupted-object-harder.html b/howto/recover-corrupted-object-harder.html
index 6d8ae76d1..52fcafbda 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-06-13</span>
+<span id="revdate">2023-06-23</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-06-13 13:58:23 PDT
+ 2023-06-23 13:24:46 PDT
</div>
</div>
</body>
diff --git a/howto/revert-a-faulty-merge.html b/howto/revert-a-faulty-merge.html
index 7bebc1bb7..ac9986d06 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-06-13</span>
+<span id="revdate">2023-06-23</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-06-13 13:58:22 PDT
+ 2023-06-23 13:24:46 PDT
</div>
</div>
</body>
diff --git a/howto/revert-branch-rebase.html b/howto/revert-branch-rebase.html
index 2451d2a23..1ec6beafa 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-06-13</span>
+<span id="revdate">2023-06-23</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-06-13 13:58:21 PDT
+ 2023-06-23 13:24:44 PDT
</div>
</div>
</body>
diff --git a/howto/separating-topic-branches.html b/howto/separating-topic-branches.html
index bbc06d99a..9db23d5bf 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-06-13</span>
+<span id="revdate">2023-06-23</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-06-13 13:58:22 PDT
+ 2023-06-23 13:24:46 PDT
</div>
</div>
</body>
diff --git a/howto/setup-git-server-over-http.html b/howto/setup-git-server-over-http.html
index 582cfc350..6cef3c1f2 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-06-13</span>
+<span id="revdate">2023-06-23</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-06-13 13:58:22 PDT
+ 2023-06-23 13:24:46 PDT
</div>
</div>
</body>
diff --git a/howto/update-hook-example.html b/howto/update-hook-example.html
index 5e896bb3f..329966833 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-06-13</span>
+<span id="revdate">2023-06-23</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-06-13 13:58:22 PDT
+ 2023-06-23 13:24:45 PDT
</div>
</div>
</body>
diff --git a/howto/use-git-daemon.html b/howto/use-git-daemon.html
index 736b447d0..33e2666e5 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-06-13</span>
+<span id="revdate">2023-06-23</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-06-13 13:58:21 PDT
+ 2023-06-23 13:24:45 PDT
</div>
</div>
</body>
diff --git a/howto/using-merge-subtree.html b/howto/using-merge-subtree.html
index 2a139f1bd..573d1c5b7 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-06-13</span>
+<span id="revdate">2023-06-23</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-06-13 13:58:21 PDT
+ 2023-06-23 13:24:45 PDT
</div>
</div>
</body>
diff --git a/howto/using-signed-tag-in-pull-request.html b/howto/using-signed-tag-in-pull-request.html
index 24f08a244..5c4badefb 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-06-13</span>
+<span id="revdate">2023-06-23</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-06-13 13:58:21 PDT
+ 2023-06-23 13:24:45 PDT
</div>
</div>
</body>
diff --git a/revisions.txt b/revisions.txt
index 9aa58052b..6ea6c7cea 100644
--- a/revisions.txt
+++ b/revisions.txt
@@ -30,10 +30,11 @@ characters and to avoid word splitting.
explicitly say 'heads/master' to tell Git which one you mean.
When ambiguous, a '<refname>' is disambiguated by taking the
first match in the following rules:
-
++
. If '$GIT_DIR/<refname>' exists, that is what you mean (this is usually
- useful only for `HEAD`, `FETCH_HEAD`, `ORIG_HEAD`, `MERGE_HEAD`
- and `CHERRY_PICK_HEAD`);
+ useful only for `HEAD`, `FETCH_HEAD`, `ORIG_HEAD`, `MERGE_HEAD`,
+ `REBASE_HEAD`, `REVERT_HEAD`, `CHERRY_PICK_HEAD`, `BISECT_HEAD`
+ and `AUTO_MERGE`);
. otherwise, 'refs/<refname>' if it exists;
@@ -44,19 +45,38 @@ characters and to avoid word splitting.
. otherwise, 'refs/remotes/<refname>' if it exists;
. otherwise, 'refs/remotes/<refname>/HEAD' if it exists.
+
+
-`HEAD` names the commit on which you based the changes in the working tree.
-`FETCH_HEAD` records the branch which you fetched from a remote repository
-with your last `git fetch` invocation.
-`ORIG_HEAD` is created by commands that move your `HEAD` in a drastic
-way (`git am`, `git merge`, `git rebase`, `git reset`),
-to record the position of the `HEAD` before their operation, so that
-you can easily change the tip of the branch back to the state before you ran
-them.
-`MERGE_HEAD` records the commit(s) which you are merging into your branch
-when you run `git merge`.
-`CHERRY_PICK_HEAD` records the commit which you are cherry-picking
-when you run `git cherry-pick`.
+ `HEAD`:::
+ names the commit on which you based the changes in the working tree.
+ `FETCH_HEAD`:::
+ records the branch which you fetched from a remote repository with
+ your last `git fetch` invocation.
+ `ORIG_HEAD`:::
+ is created by commands that move your `HEAD` in a drastic way (`git
+ am`, `git merge`, `git rebase`, `git reset`), to record the position
+ of the `HEAD` before their operation, so that you can easily change
+ the tip of the branch back to the state before you ran them.
+ `MERGE_HEAD`:::
+ records the commit(s) which you are merging into your branch when you
+ run `git merge`.
+ `REBASE_HEAD`:::
+ during a rebase, records the commit at which the operation is
+ currently stopped, either because of conflicts or an `edit` command in
+ an interactive rebase.
+ `REVERT_HEAD`:::
+ records the commit which you are reverting when you run `git revert`.
+ `CHERRY_PICK_HEAD`:::
+ records the commit which you are cherry-picking when you run `git
+ cherry-pick`.
+ `BISECT_HEAD`:::
+ records the current commit to be tested when you run `git bisect
+ --no-checkout`.
+ `AUTO_MERGE`:::
+ records a tree object corresponding to the state the
+ 'ort' merge strategy wrote to the working tree when a merge operation
+ resulted in conflicts.
+
+
Note that any of the 'refs/*' cases above may come either from
the `$GIT_DIR/refs` directory or from the `$GIT_DIR/packed-refs` file.
diff --git a/technical/api-error-handling.html b/technical/api-error-handling.html
index e99d271cf..b12955390 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-06-13</span>
+<span id="revdate">2023-06-23</span>
</div>
<div id="content">
<div id="preamble">
diff --git a/technical/api-index.html b/technical/api-index.html
index fd4639252..98fffe8c7 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-06-13</span>
+<span id="revdate">2023-06-23</span>
</div>
<div id="content">
<div id="preamble">
diff --git a/technical/api-merge.html b/technical/api-merge.html
index d54ee5d3d..efee6c226 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-06-13</span>
+<span id="revdate">2023-06-23</span>
</div>
<div id="content">
<div id="preamble">
diff --git a/technical/api-parse-options.html b/technical/api-parse-options.html
index d8779498c..c25fc10f5 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-06-13</span>
+<span id="revdate">2023-06-23</span>
</div>
<div id="content">
<div id="preamble">
diff --git a/technical/api-simple-ipc.html b/technical/api-simple-ipc.html
index ec4a11f10..9be820baa 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-06-13</span>
+<span id="revdate">2023-06-23</span>
</div>
<div id="content">
<div id="preamble">
diff --git a/technical/api-trace2.html b/technical/api-trace2.html
index e8cd2d15a..32c16d408 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-06-13</span>
+<span id="revdate">2023-06-23</span>
</div>
<div id="content">
<div id="preamble">
diff --git a/technical/bitmap-format.html b/technical/bitmap-format.html
index a36369950..e08b47ea4 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-06-13</span>
+<span id="revdate">2023-06-23</span>
</div>
<div id="content">
<div class="sect1">
diff --git a/technical/bundle-uri.html b/technical/bundle-uri.html
index c73d35052..68d7185da 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-06-13</span>
+<span id="revdate">2023-06-23</span>
</div>
<div id="content">
<div id="preamble">
diff --git a/technical/hash-function-transition.html b/technical/hash-function-transition.html
index 4e896ee28..d13a58667 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-06-13</span>
+<span id="revdate">2023-06-23</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 7869fdc36..b955f270c 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-06-13</span>
+<span id="revdate">2023-06-23</span>
</div>
<div id="content">
<div id="preamble">
diff --git a/technical/multi-pack-index.html b/technical/multi-pack-index.html
index 2cbcc49b5..95b6ad975 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-06-13</span>
+<span id="revdate">2023-06-23</span>
</div>
<div id="content">
<div id="preamble">
diff --git a/technical/pack-heuristics.html b/technical/pack-heuristics.html
index 650656ceb..e56fe6dba 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-06-13</span>
+<span id="revdate">2023-06-23</span>
</div>
<div id="content">
<div id="preamble">
diff --git a/technical/parallel-checkout.html b/technical/parallel-checkout.html
index 2d2ec7639..937d9602d 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-06-13</span>
+<span id="revdate">2023-06-23</span>
</div>
<div id="content">
<div id="preamble">
diff --git a/technical/partial-clone.html b/technical/partial-clone.html
index 8ae58aa65..e1af814c1 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-06-13</span>
+<span id="revdate">2023-06-23</span>
</div>
<div id="content">
<div id="preamble">
diff --git a/technical/racy-git.html b/technical/racy-git.html
index 4e99c8567..1e0d5bfca 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-06-13</span>
+<span id="revdate">2023-06-23</span>
</div>
<div id="content">
<div class="sect1">
diff --git a/technical/remembering-renames.txt b/technical/remembering-renames.txt
index 1e34d9139..73f41761e 100644
--- a/technical/remembering-renames.txt
+++ b/technical/remembering-renames.txt
@@ -664,7 +664,7 @@ skip-irrelevant-renames optimization means we sometimes don't detect
renames for any files within a directory that was renamed, in which
case we will not have been able to detect any rename for the directory
itself. In such a case, we do not know whether the directory was
-renamed; we want to be careful to avoid cacheing some kind of "this
+renamed; we want to be careful to avoid caching some kind of "this
directory was not renamed" statement. If we did, then a subsequent
commit being rebased could add a file to the old directory, and the
user would expect it to end up in the correct directory -- something
diff --git a/technical/scalar.html b/technical/scalar.html
index ada717878..afd47e2e2 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-06-13</span>
+<span id="revdate">2023-06-23</span>
</div>
<div id="content">
<div id="preamble">
diff --git a/technical/send-pack-pipeline.html b/technical/send-pack-pipeline.html
index fa85f98c2..9c4ad515c 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-06-13</span>
+<span id="revdate">2023-06-23</span>
</div>
<div id="content">
<div class="sect1">
diff --git a/technical/shallow.html b/technical/shallow.html
index b8f5e8613..efd4acaf5 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-06-13</span>
+<span id="revdate">2023-06-23</span>
</div>
<div id="content">
<div id="preamble">
diff --git a/technical/trivial-merge.html b/technical/trivial-merge.html
index 27679af9b..f72aef03e 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-06-13</span>
+<span id="revdate">2023-06-23</span>
</div>
<div id="content">
<div id="preamble">
diff --git a/urls-remotes.txt b/urls-remotes.txt
index e410912fe..ae8c2db42 100644
--- a/urls-remotes.txt
+++ b/urls-remotes.txt
@@ -35,7 +35,7 @@ config file would appear like this:
The `<pushurl>` is used for pushes only. It is optional and defaults
to `<URL>`. Pushing to a remote affects all defined pushurls or to all
defined urls if no pushurls are defined. Fetch, however, will only
-fetch from the first defined url if muliple urls are defined.
+fetch from the first defined url if multiple urls are defined.
Named file in `$GIT_DIR/remotes`
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
diff --git a/user-manual.html b/user-manual.html
index 7d1d7752d..0a06ef8aa 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-06-13</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-06-23</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
@@ -579,7 +579,26 @@ $ git diff --base file.txt # same as the above
$ git diff -2 file.txt # diff against stage 2
$ git diff --ours file.txt # same as the above
$ git diff -3 file.txt # diff against stage 3
-$ git diff --theirs file.txt # same as the above.</pre><p>The <a class="ulink" href="git-log.html" target="_top">git-log(1)</a> and <a class="ulink" href="gitk.html" target="_top">gitk(1)</a> commands also provide special help
+$ git diff --theirs file.txt # same as the above.</pre><p>When using the <span class="emphasis"><em>ort</em></span> merge strategy (the default), before updating the working
+tree with the result of the merge, Git writes a special ref named AUTO_MERGE
+reflecting the state of the tree it is about to write. Conflicted paths with
+textual conflicts that could not be automatically merged are written to this
+tree with conflict markers, just as in the working tree. AUTO_MERGE can thus be
+used with <a class="ulink" href="git-diff.html" target="_top">git-diff(1)</a> to show the changes you’ve made so far to resolve
+conflicts. Using the same example as above, after resolving the conflict we
+get:</p><pre class="screen">$ git diff AUTO_MERGE
+diff --git a/file.txt b/file.txt
+index cd10406..8bf5ae7 100644
+--- a/file.txt
++++ b/file.txt
+@@ -1,5 +1 @@
+-&lt;&lt;&lt;&lt;&lt;&lt;&lt; HEAD:file.txt
+-Hello world
+-=======
+-Goodbye
+-&gt;&gt;&gt;&gt;&gt;&gt;&gt; 77976da35a11db4580b80ae27e8d65caf5208086:file.txt
++Goodbye world</pre><p>Notice that the diff shows we deleted the conflict markers and both versions of
+the content line, and wrote "Goodbye world" instead.</p><p>The <a class="ulink" href="git-log.html" target="_top">git-log(1)</a> and <a class="ulink" href="gitk.html" target="_top">gitk(1)</a> commands also provide special help
for merges:</p><pre class="screen">$ git log --merge
$ gitk --merge</pre><p>These will display all commits which exist only on HEAD or on
MERGE_HEAD, and which touch an unmerged file.</p><p>You may also use <a class="ulink" href="git-mergetool.html" target="_top">git-mergetool(1)</a>, which lets you merge the
diff --git a/user-manual.txt b/user-manual.txt
index dc9c6a663..aa385137a 100644
--- a/user-manual.txt
+++ b/user-manual.txt
@@ -1343,6 +1343,33 @@ $ git diff -3 file.txt # diff against stage 3
$ git diff --theirs file.txt # same as the above.
-------------------------------------------------
+When using the 'ort' merge strategy (the default), before updating the working
+tree with the result of the merge, Git writes a special ref named AUTO_MERGE
+reflecting the state of the tree it is about to write. Conflicted paths with
+textual conflicts that could not be automatically merged are written to this
+tree with conflict markers, just as in the working tree. AUTO_MERGE can thus be
+used with linkgit:git-diff[1] to show the changes you've made so far to resolve
+conflicts. Using the same example as above, after resolving the conflict we
+get:
+
+-------------------------------------------------
+$ git diff AUTO_MERGE
+diff --git a/file.txt b/file.txt
+index cd10406..8bf5ae7 100644
+--- a/file.txt
++++ b/file.txt
+@@ -1,5 +1 @@
+-<<<<<<< HEAD:file.txt
+-Hello world
+-=======
+-Goodbye
+->>>>>>> 77976da35a11db4580b80ae27e8d65caf5208086:file.txt
++Goodbye world
+-------------------------------------------------
+
+Notice that the diff shows we deleted the conflict markers and both versions of
+the content line, and wrote "Goodbye world" instead.
+
The linkgit:git-log[1] and linkgit:gitk[1] commands also provide special help
for merges: