diff options
author | Junio C Hamano <gitster@pobox.com> | 2023-05-15 16:04:43 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2023-05-15 16:04:43 -0700 |
commit | d37473e2a262d1f0e9c59977086e3cc740b6278f (patch) | |
tree | 701a49546edd05ea1c7f8e594a495647ac8ef6be | |
parent | d155f614392834fc25b1a475aa3fa83c543b7538 (diff) | |
download | git-htmldocs-d37473e2a262d1f0e9c59977086e3cc740b6278f.tar.gz |
Autogenerated HTML docs for v2.41.0-rc0
62 files changed, 329 insertions, 181 deletions
diff --git a/MyFirstContribution.html b/MyFirstContribution.html index 665ecdaef..7af973958 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-05-11</span>
+<span id="revdate">2023-05-15</span>
</div>
<div id="content">
<div class="sect1">
diff --git a/MyFirstObjectWalk.html b/MyFirstObjectWalk.html index 5affbef65..8439ba6e2 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-05-11</span>
+<span id="revdate">2023-05-15</span>
</div>
<div id="content">
<div class="sect1">
diff --git a/RelNotes/2.41.0.txt b/RelNotes/2.41.0.txt index fa2834bd7..e177aff2d 100644 --- a/RelNotes/2.41.0.txt +++ b/RelNotes/2.41.0.txt @@ -91,6 +91,28 @@ UI, Workflows & Features * The titles of manual pages used to be chomped at an unreasonably short limit, which has been removed. + * Error messages given when working on an unborn branch that is + checked out in another worktree have been improved. + + * The documentation was misleading about the interaction between + GIT_DEFAULT_HASH and "git clone", which has been clarified to + stress that the variable is to be ignored by the command. + + * "git send-email" learned "--header-cmd=<cmd>" that can inject + arbitrary e-mail header lines to the outgoing messages. + + * "git fsck" learned to detect bit-flip breakages in the reachability + bitmap files. + + * The "--stdin" option of "git name-rev" has been replaced with + the "--annotate-stdin" option more than a year ago. We stop + advertising it in the "git name-rev -h" output. + + * "git push --all" gained an alias "git push --branches". + + * "git fetch" learned the "--porcelain" option that emits what it did + in a machine-parseable format. + Performance, Internal Implementation, Development Support etc. @@ -160,6 +182,14 @@ Performance, Internal Implementation, Development Support etc. formatting toolchain, as the upstream default ones give better output these days. + * The tracing mechanism learned to notice and report when + auto-discovered bare repositories are being used, as allowing so + without explicitly stating the user intends to do so (with setting + GIT_DIR for example) can be used with social engineering as an + attack vector. + + * "git diff-files" learned not to expand sparse-index unless needed. + Fixes since v2.40 ----------------- @@ -325,6 +355,16 @@ Fixes since v2.40 specify the end-of-line conversion. (merge 6696077ace ah/doc-attributes-text later to maint). + * Gitk updates from GfW project. + (merge 99e70f3077 js/gitk-fixes-from-gfw later to maint). + + * "git diff --dirstat" leaked memory, which has been plugged. + (merge 83973981eb jc/dirstat-plug-leaks later to maint). + + * "git merge-tree" reads the basic configuration, which can be used + by git forges to disable replace-refs feature. + (merge b6551feadf ds/merge-tree-use-config later to maint). + * Other code cleanup, docfix, build fix, etc. (merge f7111175df as/doc-markup-fix later to maint). (merge 90ff7c9898 fc/test-aggregation-clean-up later to maint). @@ -346,3 +386,6 @@ Fixes since v2.40 (merge ad353d7e77 ma/gittutorial-fixes later to maint). (merge a5855fd8d4 ar/test-cleanup-unused-file-creation-part2 later to maint). (merge 0c5308af30 sd/doc-gitignore-and-rm-cached later to maint). + (merge cbb83daeaf kh/doc-interpret-trailers-updates later to maint). + (merge 3d77fbb664 ar/config-count-tests-updates later to maint). + (merge b7cf25c8f4 jc/t9800-fix-use-of-show-s-raw later to maint). diff --git a/ReviewingGuidelines.html b/ReviewingGuidelines.html index cc5e3ff4b..e64600b23 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-05-11</span>
+<span id="revdate">2023-05-15</span>
</div>
<div id="content">
<div class="sect1">
diff --git a/SubmittingPatches.html b/SubmittingPatches.html index 97112dfeb..8434bbce3 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-05-11</span>
+<span id="revdate">2023-05-15</span>
</div>
<div id="content">
<div class="sect1">
@@ -1447,7 +1447,7 @@ this problem around.</p></div> <div id="footer">
<div id="footer-text">
Last updated
- 2023-04-11 13:51:23 PDT
+ 2023-05-15 16:02:12 PDT
</div>
</div>
</body>
diff --git a/ToolsForGit.html b/ToolsForGit.html index f2d3fc055..781def722 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-05-11</span>
+<span id="revdate">2023-05-15</span>
</div>
<div id="content">
<div class="sect1">
diff --git a/everyday.html b/everyday.html index 23c967a2c..8e2ecf7a6 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-05-11</span>
+<span id="revdate">2023-05-15</span>
</div>
<div id="content">
<div id="preamble">
diff --git a/fetch-options.txt b/fetch-options.txt index 622bd8476..41fc7ca3c 100644 --- a/fetch-options.txt +++ b/fetch-options.txt @@ -78,6 +78,13 @@ linkgit:git-config[1]. --dry-run:: Show what would be done, without making any changes. +--porcelain:: + Print the output to standard output in an easy-to-parse format for + scripts. See section OUTPUT in linkgit:git-fetch[1] for details. ++ +This is incompatible with `--recurse-submodules=[yes|on-demand]` and takes +precedence over the `fetch.output` config option. + ifndef::git-pull[] --[no-]write-fetch-head:: Write the list of remote refs fetched in the `FETCH_HEAD` diff --git a/git-bisect-lk2009.html b/git-bisect-lk2009.html index f0a831673..ecec1d1f1 100644 --- a/git-bisect-lk2009.html +++ b/git-bisect-lk2009.html @@ -737,7 +737,7 @@ asciidoc.install(); <h1>Fighting regressions with git bisect</h1>
<span id="author">Christian Couder</span><br />
<span id="email"><code><<a href="mailto:chriscool@tuxfamily.org">chriscool@tuxfamily.org</a>></code></span><br />
-<span id="revdate">2009/11/08</span>
+<span id="revdate">2023-05-15</span>
</div>
<div id="content">
<div class="sect1">
diff --git a/git-config.html b/git-config.html index 9ee9959f0..288dfa7a2 100644 --- a/git-config.html +++ b/git-config.html @@ -10390,6 +10390,9 @@ sendemail.envelopeSender sendemail.from
</dt>
<dt class="hdlist1">
+sendemail.headerCmd
+</dt>
+<dt class="hdlist1">
sendemail.signedoffbycc
</dt>
<dt class="hdlist1">
diff --git a/git-fetch.html b/git-fetch.html index 6becff88b..ee746259f 100644 --- a/git-fetch.html +++ b/git-fetch.html @@ -924,6 +924,17 @@ Internally this is used to implement the <code>push.negotiate</code> option, see </p>
</dd>
<dt class="hdlist1">
+--porcelain
+</dt>
+<dd>
+<p>
+ Print the output to standard output in an easy-to-parse format for
+ scripts. See section OUTPUT in <a href="git-fetch.html">git-fetch(1)</a> for details.
+</p>
+<div class="paragraph"><p>This is incompatible with <code>--recurse-submodules=[yes|on-demand]</code> and takes
+precedence over the <code>fetch.output</code> config option.</p></div>
+</dd>
+<dt class="hdlist1">
--[no-]write-fetch-head
</dt>
<dd>
@@ -1788,6 +1799,14 @@ representing the status of a single ref. Each line is of the form:</p></div> <div class="content">
<pre><code> <flag> <summary> <from> -> <to> [<reason>]</code></pre>
</div></div>
+<div class="paragraph"><p>When using <code>--porcelain</code>, the output format is intended to be
+machine-parseable. In contrast to the human-readable output formats it
+thus prints to standard output instead of standard error. Each line is
+of the form:</p></div>
+<div class="listingblock">
+<div class="content">
+<pre><code><flag> <old-object-id> <new-object-id> <local-reference></code></pre>
+</div></div>
<div class="paragraph"><p>The status of up-to-date refs is shown only if the --verbose option is
used.</p></div>
<div class="paragraph"><p>In compact output mode, specified with configuration variable
@@ -2218,7 +2237,7 @@ submodule update</code>. This is expected to be fixed in a future Git version.</ <div id="footer">
<div id="footer-text">
Last updated
- 2023-01-21 17:52:14 PST
+ 2023-05-15 16:02:03 PDT
</div>
</div>
</body>
diff --git a/git-fetch.txt b/git-fetch.txt index fba66f146..f123139c5 100644 --- a/git-fetch.txt +++ b/git-fetch.txt @@ -204,6 +204,15 @@ representing the status of a single ref. Each line is of the form: <flag> <summary> <from> -> <to> [<reason>] ------------------------------- +When using `--porcelain`, the output format is intended to be +machine-parseable. In contrast to the human-readable output formats it +thus prints to standard output instead of standard error. Each line is +of the form: + +------------------------------- +<flag> <old-object-id> <new-object-id> <local-reference> +------------------------------- + The status of up-to-date refs is shown only if the --verbose option is used. diff --git a/git-interpret-trailers.html b/git-interpret-trailers.html index 281a7f0c3..2d00f1a8b 100644 --- a/git-interpret-trailers.html +++ b/git-interpret-trailers.html @@ -1120,7 +1120,7 @@ $ cat msg.txt subject
message
-$ cat msg.txt | git interpret-trailers --trailer 'sign: Alice <alice@example.com>' --trailer 'sign: Bob <bob@example.com>'
+$ git interpret-trailers --trailer 'sign: Alice <alice@example.com>' --trailer 'sign: Bob <bob@example.com>' <msg.txt
subject
message
@@ -1171,17 +1171,30 @@ Configure a <em>sign</em> trailer with a command to automatically add a </p>
<div class="listingblock">
<div class="content">
-<pre><code>$ git config trailer.sign.key "Signed-off-by: "
+<pre><code>$ cat msg1.txt
+subject
+
+message
+$ git config trailer.sign.key "Signed-off-by: "
$ git config trailer.sign.ifmissing add
$ git config trailer.sign.ifexists doNothing
-$ git config trailer.sign.command 'echo "$(git config user.name) <$(git config user.email)>"'
-$ git interpret-trailers <<EOF
-> EOF
+$ git config trailer.sign.cmd 'echo "$(git config user.name) <$(git config user.email)>"'
+$ git interpret-trailers --trailer sign <msg1.txt
+subject
+
+message
Signed-off-by: Bob <bob@example.com>
-$ git interpret-trailers <<EOF
-> Signed-off-by: Alice <alice@example.com>
-> EOF
+$ cat msg2.txt
+subject
+
+message
+
+Signed-off-by: Alice <alice@example.com>
+$ git interpret-trailers --trailer sign <msg2.txt
+subject
+
+message
Signed-off-by: Alice <alice@example.com></code></pre>
</div></div>
@@ -1212,15 +1225,14 @@ Configure a <em>help</em> trailer with a cmd use a script <code>glog-find-author <pre><code>$ cat ~/bin/glog-find-author
#!/bin/sh
test -n "$1" && git log --author="$1" --pretty="%an <%ae>" -1 || true
+$ cat msg.txt
+subject
+
+message
$ 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" <<EOF
-> subject
->
-> message
->
-> EOF
+$ git interpret-trailers --trailer="help:Junio" --trailer="help:Couder" <msg.txt
subject
message
@@ -1240,15 +1252,14 @@ Configure a <em>ref</em> trailer with a cmd use a script <code>glog-grep</code> <pre><code>$ cat ~/bin/glog-grep
#!/bin/sh
test -n "$1" && git log --grep "$1" --pretty=reference -1 || true
+$ cat msg.txt
+subject
+
+message
$ 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." <<EOF
-> subject
->
-> message
->
-> EOF
+$ git interpret-trailers --trailer="ref:Add copyright notices." <msg.txt
subject
message
@@ -1263,17 +1274,20 @@ Configure a <em>see</em> trailer with a command to show the subject of a </p>
<div class="listingblock">
<div class="content">
-<pre><code>$ git config trailer.see.key "See-also: "
+<pre><code>$ cat msg.txt
+subject
+
+message
+
+see: HEAD~2
+$ cat ~/bin/glog-ref
+#!/bin/sh
+git log -1 --oneline --format="%h (%s)" --abbrev-commit --abbrev=14
+$ git config trailer.see.key "See-also: "
$ git config trailer.see.ifExists "replace"
$ git config trailer.see.ifMissing "doNothing"
-$ git config trailer.see.command "git log -1 --oneline --format=\"%h (%s)\" --abbrev-commit --abbrev=14 \$ARG"
-$ git interpret-trailers <<EOF
-> subject
->
-> message
->
-> see: HEAD~2
-> EOF
+$ git config trailer.see.cmd "glog-ref"
+$ git interpret-trailers --trailer=see <msg.txt
subject
message
@@ -1291,22 +1305,21 @@ Configure a commit template with some trailers with empty values </p>
<div class="listingblock">
<div class="content">
-<pre><code>$ sed -e 's/ Z$/ /' >commit_template.txt <<EOF
-> ***subject***
->
-> ***message***
->
-> Fixes: Z
-> Cc: Z
-> Reviewed-by: Z
-> Signed-off-by: Z
-> EOF
+<pre><code>$ cat temp.txt
+***subject***
+
+***message***
+
+Fixes: Z
+Cc: Z
+Reviewed-by: Z
+Signed-off-by: Z
+$ sed -e 's/ Z$/ /' temp.txt > commit_template.txt
$ git config commit.template commit_template.txt
-$ cat >.git/hooks/commit-msg <<EOF
-> #!/bin/sh
-> git interpret-trailers --trim-empty --trailer "git-version: \$(git describe)" "\$1" > "\$1.new"
-> mv "\$1.new" "\$1"
-> EOF
+$ cat .git/hooks/commit-msg
+#!/bin/sh
+git interpret-trailers --trim-empty --trailer "git-version: \$(git describe)" "\$1" > "\$1.new"
+mv "\$1.new" "\$1"
$ chmod +x .git/hooks/commit-msg</code></pre>
</div></div>
</li>
@@ -1330,7 +1343,7 @@ $ chmod +x .git/hooks/commit-msg</code></pre> <div id="footer">
<div id="footer-text">
Last updated
- 2022-10-28 11:53:56 PDT
+ 2023-05-15 16:02:03 PDT
</div>
</div>
</body>
diff --git a/git-interpret-trailers.txt b/git-interpret-trailers.txt index 22ff3a603..4b97f812b 100644 --- a/git-interpret-trailers.txt +++ b/git-interpret-trailers.txt @@ -280,7 +280,7 @@ $ cat msg.txt subject message -$ cat msg.txt | git interpret-trailers --trailer 'sign: Alice <alice@example.com>' --trailer 'sign: Bob <bob@example.com>' +$ git interpret-trailers --trailer 'sign: Alice <alice@example.com>' --trailer 'sign: Bob <bob@example.com>' <msg.txt subject message @@ -322,17 +322,30 @@ $ git interpret-trailers --trailer 'Cc: Alice <alice@example.com>' --trailer 'Re 'Signed-off-by: ' already, and show how it works: + ------------ +$ cat msg1.txt +subject + +message $ git config trailer.sign.key "Signed-off-by: " $ git config trailer.sign.ifmissing add $ git config trailer.sign.ifexists doNothing -$ git config trailer.sign.command 'echo "$(git config user.name) <$(git config user.email)>"' -$ git interpret-trailers <<EOF -> EOF +$ git config trailer.sign.cmd 'echo "$(git config user.name) <$(git config user.email)>"' +$ git interpret-trailers --trailer sign <msg1.txt +subject + +message Signed-off-by: Bob <bob@example.com> -$ git interpret-trailers <<EOF -> Signed-off-by: Alice <alice@example.com> -> EOF +$ cat msg2.txt +subject + +message + +Signed-off-by: Alice <alice@example.com> +$ git interpret-trailers --trailer sign <msg2.txt +subject + +message Signed-off-by: Alice <alice@example.com> ------------ @@ -357,15 +370,14 @@ Fix #42 $ cat ~/bin/glog-find-author #!/bin/sh test -n "$1" && git log --author="$1" --pretty="%an <%ae>" -1 || true +$ cat msg.txt +subject + +message $ 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" <<EOF -> subject -> -> message -> -> EOF +$ git interpret-trailers --trailer="help:Junio" --trailer="help:Couder" <msg.txt subject message @@ -382,15 +394,14 @@ Helped-by: Christian Couder <christian.couder@gmail.com> $ cat ~/bin/glog-grep #!/bin/sh test -n "$1" && git log --grep "$1" --pretty=reference -1 || true +$ cat msg.txt +subject + +message $ 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." <<EOF -> subject -> -> message -> -> EOF +$ git interpret-trailers --trailer="ref:Add copyright notices." <msg.txt subject message @@ -402,17 +413,20 @@ Reference-to: 8bc9a0c769 (Add copyright notices., 2005-04-07) commit that is related, and show how it works: + ------------ +$ cat msg.txt +subject + +message + +see: HEAD~2 +$ cat ~/bin/glog-ref +#!/bin/sh +git log -1 --oneline --format="%h (%s)" --abbrev-commit --abbrev=14 $ git config trailer.see.key "See-also: " $ git config trailer.see.ifExists "replace" $ git config trailer.see.ifMissing "doNothing" -$ git config trailer.see.command "git log -1 --oneline --format=\"%h (%s)\" --abbrev-commit --abbrev=14 \$ARG" -$ git interpret-trailers <<EOF -> subject -> -> message -> -> see: HEAD~2 -> EOF +$ git config trailer.see.cmd "glog-ref" +$ git interpret-trailers --trailer=see <msg.txt subject message @@ -427,22 +441,21 @@ See-also: fe3187489d69c4 (subject of related commit) to add a 'git-version' trailer: + ------------ -$ sed -e 's/ Z$/ /' >commit_template.txt <<EOF -> ***subject*** -> -> ***message*** -> -> Fixes: Z -> Cc: Z -> Reviewed-by: Z -> Signed-off-by: Z -> EOF +$ cat temp.txt +***subject*** + +***message*** + +Fixes: Z +Cc: Z +Reviewed-by: Z +Signed-off-by: Z +$ sed -e 's/ Z$/ /' temp.txt > commit_template.txt $ git config commit.template commit_template.txt -$ cat >.git/hooks/commit-msg <<EOF -> #!/bin/sh -> git interpret-trailers --trim-empty --trailer "git-version: \$(git describe)" "\$1" > "\$1.new" -> mv "\$1.new" "\$1" -> EOF +$ cat .git/hooks/commit-msg +#!/bin/sh +git interpret-trailers --trim-empty --trailer "git-version: \$(git describe)" "\$1" > "\$1.new" +mv "\$1.new" "\$1" $ chmod +x .git/hooks/commit-msg ------------ diff --git a/git-name-rev.html b/git-name-rev.html index 9e13d4ec3..3d8145860 100644 --- a/git-name-rev.html +++ b/git-name-rev.html @@ -750,7 +750,7 @@ git-name-rev(1) Manual Page <div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>git name-rev</em> [--tags] [--refs=<pattern>]
- ( --all | --stdin | <commit-ish>… )</pre>
+ ( --all | --annotate-stdin | <commit-ish>… )</pre>
<div class="attribution">
</div></div>
</div>
@@ -815,7 +815,8 @@ format parsable by <em>git rev-parse</em>.</p></div> Transform stdin by substituting all the 40-character SHA-1
hexes (say $hex) with "$hex ($rev_name)". When used with
--name-only, substitute with "$rev_name", omitting $hex
- altogether.
+ altogether. This option was called <code>--stdin</code> in older versions
+ of Git.
</p>
<div class="paragraph"><p>For example:</p></div>
<div class="listingblock">
@@ -840,15 +841,6 @@ while its tree object is 70d105cc79e63b81cfdcb08a15297c23e60b07ad</code></pre> </div></div>
</dd>
<dt class="hdlist1">
---stdin
-</dt>
-<dd>
-<p>
- This option is deprecated in favor of <em>git name-rev --annotate-stdin</em>.
- They are functionally equivalent.
-</p>
-</dd>
-<dt class="hdlist1">
--name-only
</dt>
<dd>
@@ -896,7 +888,7 @@ not the context.</p></div> <div class="paragraph"><p>Another nice thing you can do is:</p></div>
<div class="listingblock">
<div class="content">
-<pre><code>% git log | git name-rev --stdin</code></pre>
+<pre><code>% git log | git name-rev --annotate-stdin</code></pre>
</div></div>
</div>
</div>
@@ -911,7 +903,7 @@ not the context.</p></div> <div id="footer">
<div id="footer-text">
Last updated
- 2022-02-16 17:29:08 PST
+ 2023-05-15 16:02:03 PDT
</div>
</div>
</body>
diff --git a/git-name-rev.txt b/git-name-rev.txt index ec8a27ce8..5c56c8702 100644 --- a/git-name-rev.txt +++ b/git-name-rev.txt @@ -10,7 +10,7 @@ SYNOPSIS -------- [verse] 'git name-rev' [--tags] [--refs=<pattern>] - ( --all | --stdin | <commit-ish>... ) + ( --all | --annotate-stdin | <commit-ish>... ) DESCRIPTION ----------- @@ -46,7 +46,8 @@ OPTIONS Transform stdin by substituting all the 40-character SHA-1 hexes (say $hex) with "$hex ($rev_name)". When used with --name-only, substitute with "$rev_name", omitting $hex - altogether. + altogether. This option was called `--stdin` in older versions + of Git. + For example: + @@ -70,10 +71,6 @@ The full name after substitution is master, while its tree object is 70d105cc79e63b81cfdcb08a15297c23e60b07ad ----------- ---stdin:: - This option is deprecated in favor of 'git name-rev --annotate-stdin'. - They are functionally equivalent. - --name-only:: Instead of printing both the SHA-1 and the name, print only the name. If given with --tags the usual tag prefix of @@ -107,7 +104,7 @@ Now you are wiser, because you know that it happened 940 revisions before v0.99. Another nice thing you can do is: ------------ -% git log | git name-rev --stdin +% git log | git name-rev --annotate-stdin ------------ GIT diff --git a/git-pull.html b/git-pull.html index 289872f64..5029d9a18 100644 --- a/git-pull.html +++ b/git-pull.html @@ -1316,6 +1316,17 @@ Internally this is used to implement the <code>push.negotiate</code> option, see </p>
</dd>
<dt class="hdlist1">
+--porcelain
+</dt>
+<dd>
+<p>
+ Print the output to standard output in an easy-to-parse format for
+ scripts. See section OUTPUT in <a href="git-fetch.html">git-fetch(1)</a> for details.
+</p>
+<div class="paragraph"><p>This is incompatible with <code>--recurse-submodules=[yes|on-demand]</code> and takes
+precedence over the <code>fetch.output</code> config option.</p></div>
+</dd>
+<dt class="hdlist1">
-f
</dt>
<dt class="hdlist1">
diff --git a/git-push.html b/git-push.html index 381406b8c..4d7347eda 100644 --- a/git-push.html +++ b/git-push.html @@ -749,7 +749,7 @@ git-push(1) Manual Page <h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
-<pre class="content"><em>git push</em> [--all | --mirror | --tags] [--follow-tags] [--atomic] [-n | --dry-run] [--receive-pack=<git-receive-pack>]
+<pre class="content"><em>git push</em> [--all | --branches | --mirror | --tags] [--follow-tags] [--atomic] [-n | --dry-run] [--receive-pack=<git-receive-pack>]
[--repo=<repository>] [-f | --force] [-d | --delete] [--prune] [-v | --verbose]
[-u | --set-upstream] [-o <string> | --push-option=<string>]
[--[no-]signed|--signed=(true|false|if-asked)]
@@ -898,6 +898,9 @@ already exists on the remote side.</p></div> <dt class="hdlist1">
--all
</dt>
+<dt class="hdlist1">
+--branches
+</dt>
<dd>
<p>
Push all branches (i.e. refs under <code>refs/heads/</code>); cannot be
@@ -2178,7 +2181,7 @@ push.useBitmaps <div id="footer">
<div id="footer-text">
Last updated
- 2022-11-22 19:59:10 PST
+ 2023-05-15 16:02:03 PDT
</div>
</div>
</body>
diff --git a/git-push.txt b/git-push.txt index 5bb1d5aae..297927d86 100644 --- a/git-push.txt +++ b/git-push.txt @@ -9,7 +9,7 @@ git-push - Update remote refs along with associated objects SYNOPSIS -------- [verse] -'git push' [--all | --mirror | --tags] [--follow-tags] [--atomic] [-n | --dry-run] [--receive-pack=<git-receive-pack>] +'git push' [--all | --branches | --mirror | --tags] [--follow-tags] [--atomic] [-n | --dry-run] [--receive-pack=<git-receive-pack>] [--repo=<repository>] [-f | --force] [-d | --delete] [--prune] [-v | --verbose] [-u | --set-upstream] [-o <string> | --push-option=<string>] [--[no-]signed|--signed=(true|false|if-asked)] @@ -147,6 +147,7 @@ already exists on the remote side. `tag <tag>` means the same as `refs/tags/<tag>:refs/tags/<tag>`. --all:: +--branches:: Push all branches (i.e. refs under `refs/heads/`); cannot be used with other <refspec>. diff --git a/git-remote-helpers.html b/git-remote-helpers.html index 1decec898..5e273f26b 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-05-11</span>
+<span id="revdate">2023-05-15</span>
</div>
<div id="content">
<div id="preamble">
diff --git a/git-send-email.html b/git-send-email.html index 160979592..eab7c37ac 100644 --- a/git-send-email.html +++ b/git-send-email.html @@ -1227,6 +1227,27 @@ must be used for each option.</p></div> </p>
</dd>
<dt class="hdlist1">
+--header-cmd=<command>
+</dt>
+<dd>
+<p>
+ Specify a command that is executed once per outgoing message
+ and output RFC 2822 style header lines to be inserted into
+ them. When the <code>sendemail.headerCmd</code> configuration variable is
+ set, its value is always used. When --header-cmd is provided
+ at the command line, its value takes precedence over the
+ <code>sendemail.headerCmd</code> configuration variable.
+</p>
+</dd>
+<dt class="hdlist1">
+--no-header-cmd
+</dt>
+<dd>
+<p>
+ Disable any header command in use.
+</p>
+</dd>
+<dt class="hdlist1">
--[no-]chain-reply-to
</dt>
<dd>
@@ -1662,6 +1683,9 @@ sendemail.envelopeSender sendemail.from
</dt>
<dt class="hdlist1">
+sendemail.headerCmd
+</dt>
+<dt class="hdlist1">
sendemail.signedoffbycc
</dt>
<dt class="hdlist1">
@@ -1809,7 +1833,7 @@ Authen::SASL and Mail::Address.</p></div> <div id="footer">
<div id="footer-text">
Last updated
- 2023-05-09 16:48:09 PDT
+ 2023-05-15 16:02:03 PDT
</div>
</div>
</body>
diff --git a/git-send-email.txt b/git-send-email.txt index 6e988a83c..492a82323 100644 --- a/git-send-email.txt +++ b/git-send-email.txt @@ -320,6 +320,17 @@ Automating Output of this command must be single email address per line. Default is the value of `sendemail.ccCmd` configuration value. +--header-cmd=<command>:: + Specify a command that is executed once per outgoing message + and output RFC 2822 style header lines to be inserted into + them. When the `sendemail.headerCmd` configuration variable is + set, its value is always used. When --header-cmd is provided + at the command line, its value takes precedence over the + `sendemail.headerCmd` configuration variable. + +--no-header-cmd:: + Disable any header command in use. + --[no-]chain-reply-to:: If this is set, each email will be sent as a reply to the previous email sent. If disabled with "--no-chain-reply-to", all emails after diff --git a/git-tools.html b/git-tools.html index bedfaae59..01416192e 100644 --- a/git-tools.html +++ b/git-tools.html @@ -735,6 +735,7 @@ asciidoc.install(); <body class="article">
<div id="header">
<h1>Git Tools</h1>
+<span id="revdate">2023-05-15</span>
</div>
<div id="content">
<div id="preamble">
@@ -2982,9 +2982,9 @@ double-quotes and respecting backslash escapes. E.g., the value <dd>
<p>
If this variable is set, the default hash algorithm for new
- repositories will be set to this value. This value is currently
- ignored when cloning; the setting of the remote repository
- is used instead. The default is "sha1". THIS VARIABLE IS
+ repositories will be set to this value. This value is
+ ignored when cloning and the setting of the remote repository
+ is always used. The default is "sha1". THIS VARIABLE IS
EXPERIMENTAL! See <code>--object-format</code> in <a href="git-init.html">git-init(1)</a>.
</p>
</dd>
@@ -3796,7 +3796,7 @@ the Git Security mailing list <<a href="mailto:git-security@googlegroups.com" <div id="footer">
<div id="footer-text">
Last updated
- 2023-01-30 14:44:53 PST
+ 2023-05-15 16:02:03 PDT
</div>
</div>
</body>
@@ -546,9 +546,9 @@ double-quotes and respecting backslash escapes. E.g., the value `GIT_DEFAULT_HASH`:: If this variable is set, the default hash algorithm for new - repositories will be set to this value. This value is currently - ignored when cloning; the setting of the remote repository - is used instead. The default is "sha1". THIS VARIABLE IS + repositories will be set to this value. This value is + ignored when cloning and the setting of the remote repository + is always used. The default is "sha1". THIS VARIABLE IS EXPERIMENTAL! See `--object-format` in linkgit:git-init[1]. Git Commits diff --git a/howto-index.html b/howto-index.html index f8833c9d6..257ed22e9 100644 --- a/howto-index.html +++ b/howto-index.html @@ -735,6 +735,7 @@ asciidoc.install(); <body class="article">
<div id="header">
<h1>Git Howto Index</h1>
+<span id="revdate">2023-05-15</span>
</div>
<div id="content">
<div id="preamble">
@@ -895,7 +896,7 @@ later validate it.</p></div> <div id="footer">
<div id="footer-text">
Last updated
- 2023-03-12 23:48:38 PDT
+ 2023-05-15 16:02:07 PDT
</div>
</div>
</body>
diff --git a/howto/coordinate-embargoed-releases.html b/howto/coordinate-embargoed-releases.html index 57f378df7..76c2eccf1 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-05-11 16:27:06 PDT
+ 2023-05-15 16:02:11 PDT
</div>
</div>
</body>
diff --git a/howto/keep-canonical-history-correct.html b/howto/keep-canonical-history-correct.html index 217fc4f7b..c69b43a3c 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-05-11</span>
+<span id="revdate">2023-05-15</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-05-11 16:27:06 PDT
+ 2023-05-15 16:02:11 PDT
</div>
</div>
</body>
diff --git a/howto/maintain-git.html b/howto/maintain-git.html index 01b90cc31..7575bce5b 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-05-11</span>
+<span id="revdate">2023-05-15</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-05-11 16:27:06 PDT
+ 2023-05-15 16:02:11 PDT
</div>
</div>
</body>
diff --git a/howto/new-command.html b/howto/new-command.html index 1df47cd2a..9adf56909 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-05-11</span>
+<span id="revdate">2023-05-15</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-05-11 16:27:03 PDT
+ 2023-05-15 16:02:08 PDT
</div>
</div>
</body>
diff --git a/howto/rebase-from-internal-branch.html b/howto/rebase-from-internal-branch.html index f53bbddfb..40779b3e5 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-05-11</span>
+<span id="revdate">2023-05-15</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-05-11 16:27:06 PDT
+ 2023-05-15 16:02:11 PDT
</div>
</div>
</body>
diff --git a/howto/rebuild-from-update-hook.html b/howto/rebuild-from-update-hook.html index 409147b0c..0f15a40aa 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-05-11</span>
+<span id="revdate">2023-05-15</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-05-11 16:27:05 PDT
+ 2023-05-15 16:02:10 PDT
</div>
</div>
</body>
diff --git a/howto/recover-corrupted-blob-object.html b/howto/recover-corrupted-blob-object.html index 0efdb5a34..7e9622e3a 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-05-11</span>
+<span id="revdate">2023-05-15</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-05-11 16:27:05 PDT
+ 2023-05-15 16:02:10 PDT
</div>
</div>
</body>
diff --git a/howto/recover-corrupted-object-harder.html b/howto/recover-corrupted-object-harder.html index 5f2abdae9..85cee7d9b 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-05-11</span>
+<span id="revdate">2023-05-15</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-05-11 16:27:05 PDT
+ 2023-05-15 16:02:10 PDT
</div>
</div>
</body>
diff --git a/howto/revert-a-faulty-merge.html b/howto/revert-a-faulty-merge.html index dccd40788..099a03130 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-05-11</span>
+<span id="revdate">2023-05-15</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-05-11 16:27:05 PDT
+ 2023-05-15 16:02:10 PDT
</div>
</div>
</body>
diff --git a/howto/revert-branch-rebase.html b/howto/revert-branch-rebase.html index 9df40213c..bdf5486cb 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-05-11</span>
+<span id="revdate">2023-05-15</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-05-11 16:27:04 PDT
+ 2023-05-15 16:02:09 PDT
</div>
</div>
</body>
diff --git a/howto/separating-topic-branches.html b/howto/separating-topic-branches.html index 8ad836f1a..62427e69d 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-05-11</span>
+<span id="revdate">2023-05-15</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-05-11 16:27:05 PDT
+ 2023-05-15 16:02:10 PDT
</div>
</div>
</body>
diff --git a/howto/setup-git-server-over-http.html b/howto/setup-git-server-over-http.html index e9959c14f..b0a910803 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-05-11</span>
+<span id="revdate">2023-05-15</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-05-11 16:27:05 PDT
+ 2023-05-15 16:02:10 PDT
</div>
</div>
</body>
diff --git a/howto/update-hook-example.html b/howto/update-hook-example.html index 9c63c5572..f1539609d 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-05-11</span>
+<span id="revdate">2023-05-15</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-05-11 16:27:04 PDT
+ 2023-05-15 16:02:10 PDT
</div>
</div>
</body>
diff --git a/howto/use-git-daemon.html b/howto/use-git-daemon.html index 3fcd2197c..4a677fa61 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-05-11</span>
+<span id="revdate">2023-05-15</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-05-11 16:27:04 PDT
+ 2023-05-15 16:02:10 PDT
</div>
</div>
</body>
diff --git a/howto/using-merge-subtree.html b/howto/using-merge-subtree.html index 4e95ee095..07fa539b0 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-05-11</span>
+<span id="revdate">2023-05-15</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-05-11 16:27:04 PDT
+ 2023-05-15 16:02:09 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 98de292dc..dc05f5f34 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-05-11</span>
+<span id="revdate">2023-05-15</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-05-11 16:27:04 PDT
+ 2023-05-15 16:02:09 PDT
</div>
</div>
</body>
diff --git a/technical/api-error-handling.html b/technical/api-error-handling.html index 84edf4981..8250ce3ce 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-05-11</span>
+<span id="revdate">2023-05-15</span>
</div>
<div id="content">
<div id="preamble">
diff --git a/technical/api-index.html b/technical/api-index.html index e7b226c52..3a1e5ef90 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-05-11</span>
+<span id="revdate">2023-05-15</span>
</div>
<div id="content">
<div id="preamble">
@@ -776,7 +776,7 @@ documents them.</p></div> <div id="footer">
<div id="footer-text">
Last updated
- 2023-03-12 23:48:44 PDT
+ 2023-05-15 16:02:15 PDT
</div>
</div>
</body>
diff --git a/technical/api-merge.html b/technical/api-merge.html index 8f499df5e..69aecdd0c 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-05-11</span>
+<span id="revdate">2023-05-15</span>
</div>
<div id="content">
<div id="preamble">
diff --git a/technical/api-parse-options.html b/technical/api-parse-options.html index 22cc1132b..d2006737f 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-05-11</span>
+<span id="revdate">2023-05-15</span>
</div>
<div id="content">
<div id="preamble">
diff --git a/technical/api-simple-ipc.html b/technical/api-simple-ipc.html index e2d791b9a..c61dc88ed 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-05-11</span>
+<span id="revdate">2023-05-15</span>
</div>
<div id="content">
<div id="preamble">
diff --git a/technical/api-trace2.html b/technical/api-trace2.html index 39349e0ae..618bf4c62 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-05-11</span>
+<span id="revdate">2023-05-15</span>
</div>
<div id="content">
<div id="preamble">
diff --git a/technical/bitmap-format.html b/technical/bitmap-format.html index 6d67c604f..88fe0500a 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-05-11</span>
+<span id="revdate">2023-05-15</span>
</div>
<div id="content">
<div class="sect1">
diff --git a/technical/bundle-uri.html b/technical/bundle-uri.html index fbdfc9ead..f0b2251ea 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-05-11</span>
+<span id="revdate">2023-05-15</span>
</div>
<div id="content">
<div id="preamble">
diff --git a/technical/hash-function-transition.html b/technical/hash-function-transition.html index 503fd4ddf..3c566fdd8 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-05-11</span>
+<span id="revdate">2023-05-15</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 be37f2972..e40300a76 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-05-11</span>
+<span id="revdate">2023-05-15</span>
</div>
<div id="content">
<div id="preamble">
diff --git a/technical/multi-pack-index.html b/technical/multi-pack-index.html index 593ed6c93..1aaa5fd4f 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-05-11</span>
+<span id="revdate">2023-05-15</span>
</div>
<div id="content">
<div id="preamble">
diff --git a/technical/pack-heuristics.html b/technical/pack-heuristics.html index c79897fc0..019ab2991 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’s Packing Heuristics</h1>
-<span id="revdate">2023-05-11</span>
+<span id="revdate">2023-05-15</span>
</div>
<div id="content">
<div id="preamble">
diff --git a/technical/parallel-checkout.html b/technical/parallel-checkout.html index 2b769e931..2207011d4 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-05-11</span>
+<span id="revdate">2023-05-15</span>
</div>
<div id="content">
<div id="preamble">
diff --git a/technical/partial-clone.html b/technical/partial-clone.html index 55b30cf26..774457c55 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-05-11</span>
+<span id="revdate">2023-05-15</span>
</div>
<div id="content">
<div id="preamble">
diff --git a/technical/racy-git.html b/technical/racy-git.html index 417b60296..a9993dfce 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-05-11</span>
+<span id="revdate">2023-05-15</span>
</div>
<div id="content">
<div class="sect1">
diff --git a/technical/scalar.html b/technical/scalar.html index 1cd89399a..74fd621b4 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-05-11</span>
+<span id="revdate">2023-05-15</span>
</div>
<div id="content">
<div id="preamble">
diff --git a/technical/send-pack-pipeline.html b/technical/send-pack-pipeline.html index bc4f0e817..97d48b5eb 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-05-11</span>
+<span id="revdate">2023-05-15</span>
</div>
<div id="content">
<div class="sect1">
diff --git a/technical/shallow.html b/technical/shallow.html index 43c27911a..bb8b7376b 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-05-11</span>
+<span id="revdate">2023-05-15</span>
</div>
<div id="content">
<div id="preamble">
diff --git a/technical/trivial-merge.html b/technical/trivial-merge.html index b9dfb1eb2..11379d1da 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-05-11</span>
+<span id="revdate">2023-05-15</span>
</div>
<div id="content">
<div id="preamble">
diff --git a/user-manual.html b/user-manual.html index 61a5f5e50..1f0cbf158 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-05-11</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-05-15</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 |