diff options
55 files changed, 538 insertions, 310 deletions
diff --git a/MyFirstContribution.html b/MyFirstContribution.html index 870fa1c5c..4ef794a48 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">2024-05-13</span>
+<span id="revdate">2024-05-16</span>
</div>
<div id="content">
<div class="sect1">
diff --git a/MyFirstObjectWalk.html b/MyFirstObjectWalk.html index c0b69c148..5b4f22ec0 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">2024-05-13</span>
+<span id="revdate">2024-05-16</span>
</div>
<div id="content">
<div class="sect1">
diff --git a/RelNotes/2.46.0.txt b/RelNotes/2.46.0.txt index 966ad69a5..a65261fd7 100644 --- a/RelNotes/2.46.0.txt +++ b/RelNotes/2.46.0.txt @@ -27,6 +27,16 @@ UI, Workflows & Features * The color parsing code learned to handle 12-bit RGB colors, spelled as "#RGB" (in addition to "#RRGGBB" that is already supported). + * The operation mode options (like "--get") the "git config" command + uses have been deprecated and replaced with subcommands (like "git + config get"). + + * "git tag" learned the "--trailer" option to futz with the trailers + in the same way as "git commit" does. + + * A new global "--no-advice" option can be used to disable all advice + messages, which is meant to be used only in scripts. + Performance, Internal Implementation, Development Support etc. @@ -48,10 +58,19 @@ Performance, Internal Implementation, Development Support etc. by always instantiating "the_repository" and replacing references to "the_index" with references to its .index member. - * Git-GUI has a new maintainer, Johannes Sixt. (merge e18ad8eb26 jc/git-gui-maintainer-update later to maint). + * The "test-tool" has been taught to run testsuite tests in parallel, + bypassing the need to use the "prove" tool. + + * The "whitespace check" task that was enabled for GitHub Actions CI + has been ported to GitLab CI. + + * The refs API lost functions that implicitly assumes to work on the + primary ref_store by forcing the callers to pass a ref_store as an + argument. + Fixes since v2.45 ----------------- @@ -109,9 +128,15 @@ Fixes since v2.45 support for the attr.tree configuration variable. (merge 51441e6460 jc/no-default-attr-tree-in-bare later to maint). + * The "--exit-code" option of "git diff" command learned to work with + the "--ext-diff" option. + (merge 11be65cfa4 rs/external-diff-with-exit-code later to maint). + * Other code cleanup, docfix, build fix, etc. (merge 4cf6e7bf5e jt/doc-submitting-rerolled-series later to maint). (merge a5a4cb7b27 rs/diff-parseopts-cleanup later to maint). (merge 395c130fd8 ma/win32-unix-domain-socket later to maint). (merge 7df2405b38 jk/ci-macos-gcc13-fix later to maint). (merge 55702c543e fa/p4-error later to maint). + (merge 2566a77774 vd/doc-merge-tree-x-option later to maint). + (merge b64b0df9da ds/scalar-reconfigure-all-fix later to maint). diff --git a/ReviewingGuidelines.html b/ReviewingGuidelines.html index 2b625a5a3..06e24c8ce 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">2024-05-13</span>
+<span id="revdate">2024-05-16</span>
</div>
<div id="content">
<div class="sect1">
diff --git a/SubmittingPatches.html b/SubmittingPatches.html index 1cb7181b9..55124e015 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">2024-05-13</span>
+<span id="revdate">2024-05-16</span>
</div>
<div id="content">
<div class="sect1">
diff --git a/ToolsForGit.html b/ToolsForGit.html index 254703fab..cc3c28bf7 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">2024-05-13</span>
+<span id="revdate">2024-05-16</span>
</div>
<div id="content">
<div class="sect1">
diff --git a/everyday.html b/everyday.html index e41c40b1f..2853bf1ce 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">2024-05-13</span>
+<span id="revdate">2024-05-16</span>
</div>
<div id="content">
<div id="preamble">
diff --git a/git-config.html b/git-config.html index e9d68dc2f..15f049fdc 100644 --- a/git-config.html +++ b/git-config.html @@ -749,21 +749,14 @@ git-config(1) Manual Page <h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
-<pre class="content"><em>git config</em> [<file-option>] [--type=<type>] [--comment=<message>] [--fixed-value] [--show-origin] [--show-scope] [-z|--null] <name> [<value> [<value-pattern>]]
-<em>git config</em> [<file-option>] [--type=<type>] [--comment=<message>] --add <name> <value>
-<em>git config</em> [<file-option>] [--type=<type>] [--comment=<message>] [--fixed-value] --replace-all <name> <value> [<value-pattern>]
-<em>git config</em> [<file-option>] [--type=<type>] [--show-origin] [--show-scope] [-z|--null] [--fixed-value] --get <name> [<value-pattern>]
-<em>git config</em> [<file-option>] [--type=<type>] [--show-origin] [--show-scope] [-z|--null] [--fixed-value] --get-all <name> [<value-pattern>]
-<em>git config</em> [<file-option>] [--type=<type>] [--show-origin] [--show-scope] [-z|--null] [--fixed-value] [--name-only] --get-regexp <name-regex> [<value-pattern>]
-<em>git config</em> [<file-option>] [--type=<type>] [-z|--null] --get-urlmatch <name> <URL>
-<em>git config</em> [<file-option>] [--fixed-value] --unset <name> [<value-pattern>]
-<em>git config</em> [<file-option>] [--fixed-value] --unset-all <name> [<value-pattern>]
-<em>git config</em> [<file-option>] --rename-section <old-name> <new-name>
-<em>git config</em> [<file-option>] --remove-section <name>
-<em>git config</em> [<file-option>] [--show-origin] [--show-scope] [-z|--null] [--name-only] -l | --list
-<em>git config</em> [<file-option>] --get-color <name> [<default>]
-<em>git config</em> [<file-option>] --get-colorbool <name> [<stdout-is-tty>]
-<em>git config</em> [<file-option>] -e | --edit</pre>
+<pre class="content"><em>git config list</em> [<file-option>] [<display-option>] [--includes]
+<em>git config get</em> [<file-option>] [<display-option>] [--includes] [--all] [--regexp=<regexp>] [--value=<value>] [--fixed-value] [--default=<default>] <name>
+<em>git config set</em> [<file-option>] [--type=<type>] [--all] [--value=<value>] [--fixed-value] <name> <value>
+<em>git config unset</em> [<file-option>] [--all] [--value=<value>] [--fixed-value] <name> <value>
+<em>git config rename-section</em> [<file-option>] <old-name> <new-name>
+<em>git config remove-section</em> [<file-option>] <name>
+<em>git config edit</em> [<file-option>]
+<em>git config</em> [<file-option>] --get-colorbool <name> [<stdout-is-tty>]</pre>
<div class="attribution">
</div></div>
</div>
@@ -774,7 +767,7 @@ git-config(1) Manual Page <div class="paragraph"><p>You can query/set/replace/unset options with this command. The name is
actually the section and the key separated by a dot, and the value will be
escaped.</p></div>
-<div class="paragraph"><p>Multiple lines can be added to an option by using the <code>--add</code> option.
+<div class="paragraph"><p>Multiple lines can be added to an option by using the <code>--append</code> option.
If you want to update or unset an option which can occur on multiple
lines, a <code>value-pattern</code> (which is an extended regular expression,
unless the <code>--fixed-value</code> option is given) needs to be given. Only the
@@ -842,6 +835,81 @@ you try to use an invalid regexp (ret=6). </div>
</div>
<div class="sect1">
+<h2 id="_commands">COMMANDS</h2>
+<div class="sectionbody">
+<div class="dlist"><dl>
+<dt class="hdlist1">
+list
+</dt>
+<dd>
+<p>
+ List all variables set in config file, along with their values.
+</p>
+</dd>
+<dt class="hdlist1">
+get
+</dt>
+<dd>
+<p>
+ Emits the value of the specified key. If key is present multiple times
+ in the configuration, emits the last value. If <code>--all</code> is specified,
+ emits all values associated with key. Returns error code 1 if key is
+ not present.
+</p>
+</dd>
+<dt class="hdlist1">
+set
+</dt>
+<dd>
+<p>
+ Set value for one or more config options. By default, this command
+ refuses to write multi-valued config options. Passing <code>--all</code> will
+ replace all multi-valued config options with the new value, whereas
+ <code>--value=</code> will replace all config options whose values match the given
+ pattern.
+</p>
+</dd>
+<dt class="hdlist1">
+unset
+</dt>
+<dd>
+<p>
+ Unset value for one or more config options. By default, this command
+ refuses to unset multi-valued keys. Passing <code>--all</code> will unset all
+ multi-valued config options, whereas <code>--value</code> will unset all config
+ options whose values match the given pattern.
+</p>
+</dd>
+<dt class="hdlist1">
+rename-section
+</dt>
+<dd>
+<p>
+ Rename the given section to a new name.
+</p>
+</dd>
+<dt class="hdlist1">
+remove-section
+</dt>
+<dd>
+<p>
+ Remove the given section from the configuration file.
+</p>
+</dd>
+<dt class="hdlist1">
+edit
+</dt>
+<dd>
+<p>
+ Opens an editor to modify the specified config file; either
+ <code>--system</code>, <code>--global</code>, <code>--local</code> (default), <code>--worktree</code>, or
+ <code>--file <config-file></code>.
+</p>
+</dd>
+</dl></div>
+</div>
+</div>
+<div class="sect1">
<h2 id="OPTIONS">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
@@ -855,13 +923,12 @@ you try to use an invalid regexp (ret=6). </p>
</dd>
<dt class="hdlist1">
---add
+--append
</dt>
<dd>
<p>
Adds a new line to the option without altering any existing
- values. This is the same as providing <em>^$</em> as the <code>value-pattern</code>
- in <code>--replace-all</code>.
+ values. This is the same as providing <em>--value=^$</em> in <code>set</code>.
</p>
</dd>
<dt class="hdlist1">
@@ -884,37 +951,26 @@ permitted).</code></pre> </div></div>
</dd>
<dt class="hdlist1">
---get
+--all
</dt>
<dd>
<p>
- Get the value for a given key (optionally filtered by a regex
- matching the value). Returns error code 1 if the key was not
- found and the last value if multiple key values were found.
+ With <code>get</code>, return all values for a multi-valued key.
</p>
</dd>
<dt class="hdlist1">
---get-all
+---regexp
</dt>
<dd>
<p>
- Like get, but returns all values for a multi-valued key.
+ With <code>get</code>, interpret the name as a regular expression. Regular
+ expression matching is currently case-sensitive and done against a
+ canonicalized version of the key in which section and variable names
+ are lowercased, but subsection names are not.
</p>
</dd>
<dt class="hdlist1">
---get-regexp
-</dt>
-<dd>
-<p>
- Like --get-all, but interprets the name as a regular expression and
- writes out the key names. Regular expression matching is currently
- case-sensitive and done against a canonicalized version of the key
- in which section and variable names are lowercased, but subsection
- names are not.
-</p>
-</dd>
-<dt class="hdlist1">
---get-urlmatch <name> <URL>
+--url=<URL>
</dt>
<dd>
<p>
@@ -1007,49 +1063,6 @@ available files.</p></div> </p>
</dd>
<dt class="hdlist1">
---remove-section
-</dt>
-<dd>
-<p>
- Remove the given section from the configuration file.
-</p>
-</dd>
-<dt class="hdlist1">
---rename-section
-</dt>
-<dd>
-<p>
- Rename the given section to a new name.
-</p>
-</dd>
-<dt class="hdlist1">
---unset
-</dt>
-<dd>
-<p>
- Remove the line matching the key from config file.
-</p>
-</dd>
-<dt class="hdlist1">
---unset-all
-</dt>
-<dd>
-<p>
- Remove all lines matching the key from config file.
-</p>
-</dd>
-<dt class="hdlist1">
--l
-</dt>
-<dt class="hdlist1">
---list
-</dt>
-<dd>
-<p>
- List all variables set in config file, along with their values.
-</p>
-</dd>
-<dt class="hdlist1">
--fixed-value
</dt>
<dd>
@@ -1165,8 +1178,8 @@ available files.</p></div> </dt>
<dd>
<p>
- Output only the names of config variables for <code>--list</code> or
- <code>--get-regexp</code>.
+ Output only the names of config variables for <code>list</code> or
+ <code>get</code>.
</p>
</dd>
<dt class="hdlist1">
@@ -1206,50 +1219,150 @@ available files.</p></div> </p>
</dd>
<dt class="hdlist1">
+--[no-]includes
+</dt>
+<dd>
+<p>
+ Respect <code>include.*</code> directives in config files when looking up
+ values. Defaults to <code>off</code> when a specific file is given (e.g.,
+ using <code>--file</code>, <code>--global</code>, etc) and <code>on</code> when searching all
+ config files.
+</p>
+</dd>
+<dt class="hdlist1">
+--default <value>
+</dt>
+<dd>
+<p>
+ When using <code>get</code>, and the requested variable is not found, behave as if
+ <value> were the value assigned to that variable.
+</p>
+</dd>
+</dl></div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_deprecated_modes">DEPRECATED MODES</h2>
+<div class="sectionbody">
+<div class="paragraph"><p>The following modes have been deprecated in favor of subcommands. It is
+recommended to migrate to the new syntax.</p></div>
+<div class="dlist"><dl>
+<dt class="hdlist1">
+<em>git config <name></em>
+</dt>
+<dd>
+<p>
+ Replaced by <code>git config get <name></code>.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>git config <name> <value> [<value-pattern>]</em>
+</dt>
+<dd>
+<p>
+ Replaced by <code>git config set [--value=<pattern>] <name> <value></code>.
+</p>
+</dd>
+<dt class="hdlist1">
+-l
+</dt>
+<dt class="hdlist1">
+--list
+</dt>
+<dd>
+<p>
+ Replaced by <code>git config list</code>.
+</p>
+</dd>
+<dt class="hdlist1">
+--get <name> [<value-pattern>]
+</dt>
+<dd>
+<p>
+ Replaced by <code>git config get [--value=<pattern>] <name></code>.
+</p>
+</dd>
+<dt class="hdlist1">
+--get-all <name> [<value-pattern>]
+</dt>
+<dd>
+<p>
+ Replaced by <code>git config get [--value=<pattern>] --all --show-names <name></code>.
+</p>
+</dd>
+<dt class="hdlist1">
+--get-regexp <name-regexp>
+</dt>
+<dd>
+<p>
+ Replaced by <code>git config get --all --show-names --regexp <name-regexp></code>.
+</p>
+</dd>
+<dt class="hdlist1">
+--get-urlmatch <name> <URL>
+</dt>
+<dd>
+<p>
+ Replaced by <code>git config get --all --show-names --url=<URL> <name></code>.
+</p>
+</dd>
+<dt class="hdlist1">
--get-color <name> [<default>]
</dt>
<dd>
<p>
- Find the color configured for <code>name</code> (e.g. <code>color.diff.new</code>) and
- output it as the ANSI color escape sequence to the standard
- output. The optional <code>default</code> parameter is used instead, if
- there is no color configured for <code>name</code>.
+ Replaced by <code>git config get --type=color [--default=<default>] <name></code>.
</p>
-<div class="paragraph"><p><code>--type=color [--default=<default>]</code> is preferred over <code>--get-color</code>
-(but note that <code>--get-color</code> will omit the trailing newline printed by
-<code>--type=color</code>).</p></div>
</dd>
<dt class="hdlist1">
--e
+--add <name> <value>
</dt>
+<dd>
+<p>
+ Replaced by <code>git config set --append <name> <value></code>.
+</p>
+</dd>
<dt class="hdlist1">
---edit
+--unset <name> [<value-pattern>]
</dt>
<dd>
<p>
- Opens an editor to modify the specified config file; either
- <code>--system</code>, <code>--global</code>, <code>--local</code> (default), <code>--worktree</code>, or
- <code>--file <config-file></code>.
+ Replaced by <code>git config unset [--value=<pattern>] <name></code>.
</p>
</dd>
<dt class="hdlist1">
---[no-]includes
+--unset-all <name> [<value-pattern>]
</dt>
<dd>
<p>
- Respect <code>include.*</code> directives in config files when looking up
- values. Defaults to <code>off</code> when a specific file is given (e.g.,
- using <code>--file</code>, <code>--global</code>, etc) and <code>on</code> when searching all
- config files.
+ Replaced by <code>git config unset [--value=<pattern>] --all <name></code>.
</p>
</dd>
<dt class="hdlist1">
---default <value>
+--rename-section <old-name> <new-name>
</dt>
<dd>
<p>
- When using <code>--get</code>, and the requested variable is not found, behave as if
- <value> were the value assigned to that variable.
+ Replaced by <code>git config rename-section <old-name> <new-name></code>.
+</p>
+</dd>
+<dt class="hdlist1">
+--remove-section <name>
+</dt>
+<dd>
+<p>
+ Replaced by <code>git config remove-section <name></code>.
+</p>
+</dd>
+<dt class="hdlist1">
+-e
+</dt>
+<dt class="hdlist1">
+--edit
+</dt>
+<dd>
+<p>
+ Replaced by <code>git config edit</code>.
</p>
</dd>
</dl></div>
@@ -1259,8 +1372,8 @@ available files.</p></div> <h2 id="_configuration">CONFIGURATION</h2>
<div class="sectionbody">
<div class="paragraph"><p><code>pager.config</code> is only respected when listing configuration, i.e., when
-using <code>--list</code> or any of the <code>--get-*</code> which may return multiple results.
-The default is to use a pager.</p></div>
+using <code>list</code> or <code>get</code> which may return multiple results. The default is to use
+a pager.</p></div>
</div>
</div>
<div class="sect1">
@@ -1321,8 +1434,8 @@ if the file is unreadable, but not if it is missing.</p></div> precedence over values read earlier. When multiple values are taken then all
values of a key from all files will be used.</p></div>
<div class="paragraph"><p>By default, options are only written to the repository specific
-configuration file. Note that this also affects options like <code>--replace-all</code>
-and <code>--unset</code>. <strong><em>git config</em> will only ever change one file at a time</strong>.</p></div>
+configuration file. Note that this also affects options like <code>set</code>
+and <code>unset</code>. <strong><em>git config</em> will only ever change one file at a time</strong>.</p></div>
<div class="paragraph"><p>You can limit which configuration sources are read from or written to by
specifying the path of a file with the <code>--file</code> option, or by specifying a
configuration scope with <code>--system</code>, <code>--global</code>, <code>--local</code>, or <code>--worktree</code>.
@@ -1504,83 +1617,78 @@ GIT_CONFIG <div class="paragraph"><p>you can set the filemode to true with</p></div>
<div class="listingblock">
<div class="content">
-<pre><code>% git config core.filemode true</code></pre>
+<pre><code>% git config set core.filemode true</code></pre>
</div></div>
<div class="paragraph"><p>The hypothetical proxy command entries actually have a postfix to discern
what URL they apply to. Here is how to change the entry for kernel.org
to "ssh".</p></div>
<div class="listingblock">
<div class="content">
-<pre><code>% git config core.gitproxy '"ssh" for kernel.org' 'for kernel.org$'</code></pre>
+<pre><code>% git config set --value='for kernel.org$' core.gitproxy '"ssh" for kernel.org'</code></pre>
</div></div>
<div class="paragraph"><p>This makes sure that only the key/value pair for kernel.org is replaced.</p></div>
<div class="paragraph"><p>To delete the entry for renames, do</p></div>
<div class="listingblock">
<div class="content">
-<pre><code>% git config --unset diff.renames</code></pre>
+<pre><code>% git config unset diff.renames</code></pre>
</div></div>
<div class="paragraph"><p>If you want to delete an entry for a multivar (like core.gitproxy above),
you have to provide a regex matching the value of exactly one line.</p></div>
<div class="paragraph"><p>To query the value for a given key, do</p></div>
<div class="listingblock">
<div class="content">
-<pre><code>% git config --get core.filemode</code></pre>
-</div></div>
-<div class="paragraph"><p>or</p></div>
-<div class="listingblock">
-<div class="content">
-<pre><code>% git config core.filemode</code></pre>
+<pre><code>% git config get core.filemode</code></pre>
</div></div>
<div class="paragraph"><p>or, to query a multivar:</p></div>
<div class="listingblock">
<div class="content">
-<pre><code>% git config --get core.gitproxy "for kernel.org$"</code></pre>
+<pre><code>% git config get --value="for kernel.org$" core.gitproxy</code></pre>
</div></div>
<div class="paragraph"><p>If you want to know all the values for a multivar, do:</p></div>
<div class="listingblock">
<div class="content">
-<pre><code>% git config --get-all core.gitproxy</code></pre>
+<pre><code>% git config get --all --show-names core.gitproxy</code></pre>
</div></div>
<div class="paragraph"><p>If you like to live dangerously, you can replace <strong>all</strong> core.gitproxy by a
new one with</p></div>
<div class="listingblock">
<div class="content">
-<pre><code>% git config --replace-all core.gitproxy ssh</code></pre>
+<pre><code>% git config set --all core.gitproxy ssh</code></pre>
</div></div>
<div class="paragraph"><p>However, if you really only want to replace the line for the default proxy,
i.e. the one without a "for …" postfix, do something like this:</p></div>
<div class="listingblock">
<div class="content">
-<pre><code>% git config core.gitproxy ssh '! for '</code></pre>
+<pre><code>% git config set --value='! for ' core.gitproxy ssh</code></pre>
</div></div>
<div class="paragraph"><p>To actually match only values with an exclamation mark, you have to</p></div>
<div class="listingblock">
<div class="content">
-<pre><code>% git config section.key value '[!]'</code></pre>
+<pre><code>% git config set --value='[!]' section.key value</code></pre>
</div></div>
<div class="paragraph"><p>To add a new proxy, without altering any of the existing ones, use</p></div>
<div class="listingblock">
<div class="content">
-<pre><code>% git config --add core.gitproxy '"proxy-command" for example.com'</code></pre>
+<pre><code>% git config set --append core.gitproxy '"proxy-command" for example.com'</code></pre>
</div></div>
<div class="paragraph"><p>An example to use customized color from the configuration in your
script:</p></div>
<div class="listingblock">
<div class="content">
<pre><code>#!/bin/sh
-WS=$(git config --get-color color.diff.whitespace "blue reverse")
-RESET=$(git config --get-color "" "reset")
+WS=$(git config get --type=color --default="blue reverse" color.diff.whitespace)
+RESET=$(git config get --type=color --default="reset" "")
echo "${WS}your whitespace color or blue reverse${RESET}"</code></pre>
</div></div>
<div class="paragraph"><p>For URLs in <code>https://weak.example.com</code>, <code>http.sslVerify</code> is set to
false, while it is set to <code>true</code> for all others:</p></div>
<div class="listingblock">
<div class="content">
-<pre><code>% git config --type=bool --get-urlmatch http.sslverify https://good.example.com
+<pre><code>% git config get --type=bool --url=https://good.example.com http.sslverify
true
-% git config --type=bool --get-urlmatch http.sslverify https://weak.example.com
+% git config get --type=bool --url=https://weak.example.com http.sslverify
false
-% git config --get-urlmatch http https://weak.example.com
+% git config get --url=https://weak.example.com http
http.cookieFile /tmp/cookie.txt
http.sslverify false</code></pre>
</div></div>
@@ -12018,7 +12126,7 @@ looks like</p></div> <div id="footer">
<div id="footer-text">
Last updated
- 2024-04-05 11:03:41 PDT
+ 2024-05-16 11:09:25 PDT
</div>
</div>
</body>
diff --git a/git-config.txt b/git-config.txt index ac61113fc..65c645d46 100644 --- a/git-config.txt +++ b/git-config.txt @@ -9,21 +9,14 @@ git-config - Get and set repository or global options SYNOPSIS -------- [verse] -'git config' [<file-option>] [--type=<type>] [--comment=<message>] [--fixed-value] [--show-origin] [--show-scope] [-z|--null] <name> [<value> [<value-pattern>]] -'git config' [<file-option>] [--type=<type>] [--comment=<message>] --add <name> <value> -'git config' [<file-option>] [--type=<type>] [--comment=<message>] [--fixed-value] --replace-all <name> <value> [<value-pattern>] -'git config' [<file-option>] [--type=<type>] [--show-origin] [--show-scope] [-z|--null] [--fixed-value] --get <name> [<value-pattern>] -'git config' [<file-option>] [--type=<type>] [--show-origin] [--show-scope] [-z|--null] [--fixed-value] --get-all <name> [<value-pattern>] -'git config' [<file-option>] [--type=<type>] [--show-origin] [--show-scope] [-z|--null] [--fixed-value] [--name-only] --get-regexp <name-regex> [<value-pattern>] -'git config' [<file-option>] [--type=<type>] [-z|--null] --get-urlmatch <name> <URL> -'git config' [<file-option>] [--fixed-value] --unset <name> [<value-pattern>] -'git config' [<file-option>] [--fixed-value] --unset-all <name> [<value-pattern>] -'git config' [<file-option>] --rename-section <old-name> <new-name> -'git config' [<file-option>] --remove-section <name> -'git config' [<file-option>] [--show-origin] [--show-scope] [-z|--null] [--name-only] -l | --list -'git config' [<file-option>] --get-color <name> [<default>] +'git config list' [<file-option>] [<display-option>] [--includes] +'git config get' [<file-option>] [<display-option>] [--includes] [--all] [--regexp=<regexp>] [--value=<value>] [--fixed-value] [--default=<default>] <name> +'git config set' [<file-option>] [--type=<type>] [--all] [--value=<value>] [--fixed-value] <name> <value> +'git config unset' [<file-option>] [--all] [--value=<value>] [--fixed-value] <name> <value> +'git config rename-section' [<file-option>] <old-name> <new-name> +'git config remove-section' [<file-option>] <name> +'git config edit' [<file-option>] 'git config' [<file-option>] --get-colorbool <name> [<stdout-is-tty>] -'git config' [<file-option>] -e | --edit DESCRIPTION ----------- @@ -31,7 +24,7 @@ You can query/set/replace/unset options with this command. The name is actually the section and the key separated by a dot, and the value will be escaped. -Multiple lines can be added to an option by using the `--add` option. +Multiple lines can be added to an option by using the `--append` option. If you want to update or unset an option which can occur on multiple lines, a `value-pattern` (which is an extended regular expression, unless the `--fixed-value` option is given) needs to be given. Only the @@ -74,6 +67,42 @@ On success, the command returns the exit code 0. A list of all available configuration variables can be obtained using the `git help --config` command. +COMMANDS +-------- + +list:: + List all variables set in config file, along with their values. + +get:: + Emits the value of the specified key. If key is present multiple times + in the configuration, emits the last value. If `--all` is specified, + emits all values associated with key. Returns error code 1 if key is + not present. + +set:: + Set value for one or more config options. By default, this command + refuses to write multi-valued config options. Passing `--all` will + replace all multi-valued config options with the new value, whereas + `--value=` will replace all config options whose values match the given + pattern. + +unset:: + Unset value for one or more config options. By default, this command + refuses to unset multi-valued keys. Passing `--all` will unset all + multi-valued config options, whereas `--value` will unset all config + options whose values match the given pattern. + +rename-section:: + Rename the given section to a new name. + +remove-section:: + Remove the given section from the configuration file. + +edit:: + Opens an editor to modify the specified config file; either + `--system`, `--global`, `--local` (default), `--worktree`, or + `--file <config-file>`. + [[OPTIONS]] OPTIONS ------- @@ -82,10 +111,9 @@ OPTIONS Default behavior is to replace at most one line. This replaces all lines matching the key (and optionally the `value-pattern`). ---add:: +--append:: Adds a new line to the option without altering any existing - values. This is the same as providing '^$' as the `value-pattern` - in `--replace-all`. + values. This is the same as providing '--value=^$' in `set`. --comment <message>:: Append a comment at the end of new or modified lines. @@ -99,22 +127,16 @@ OPTIONS not contain linefeed characters (no multi-line comments are permitted). ---get:: - Get the value for a given key (optionally filtered by a regex - matching the value). Returns error code 1 if the key was not - found and the last value if multiple key values were found. +--all:: + With `get`, return all values for a multi-valued key. ---get-all:: - Like get, but returns all values for a multi-valued key. +---regexp:: + With `get`, interpret the name as a regular expression. Regular + expression matching is currently case-sensitive and done against a + canonicalized version of the key in which section and variable names + are lowercased, but subsection names are not. ---get-regexp:: - Like --get-all, but interprets the name as a regular expression and - writes out the key names. Regular expression matching is currently - case-sensitive and done against a canonicalized version of the key - in which section and variable names are lowercased, but subsection - names are not. - ---get-urlmatch <name> <URL>:: +--url=<URL>:: When given a two-part <name> as <section>.<key>, the value for <section>.<URL>.<key> whose <URL> part matches the best to the given URL is returned (if no such key exists, the value for @@ -178,22 +200,6 @@ See also <<FILES>>. section in linkgit:gitrevisions[7] for a more complete list of ways to spell blob names. ---remove-section:: - Remove the given section from the configuration file. - ---rename-section:: - Rename the given section to a new name. - ---unset:: - Remove the line matching the key from config file. - ---unset-all:: - Remove all lines matching the key from config file. - --l:: ---list:: - List all variables set in config file, along with their values. - --fixed-value:: When used with the `value-pattern` argument, treat `value-pattern` as an exact string instead of a regular expression. This will restrict @@ -248,8 +254,8 @@ Valid `<type>`'s include: contain line breaks. --name-only:: - Output only the names of config variables for `--list` or - `--get-regexp`. + Output only the names of config variables for `list` or + `get`. --show-origin:: Augment the output of all queried config options with the @@ -273,23 +279,6 @@ Valid `<type>`'s include: When the color setting for `name` is undefined, the command uses `color.ui` as fallback. ---get-color <name> [<default>]:: - - Find the color configured for `name` (e.g. `color.diff.new`) and - output it as the ANSI color escape sequence to the standard - output. The optional `default` parameter is used instead, if - there is no color configured for `name`. -+ -`--type=color [--default=<default>]` is preferred over `--get-color` -(but note that `--get-color` will omit the trailing newline printed by -`--type=color`). - --e:: ---edit:: - Opens an editor to modify the specified config file; either - `--system`, `--global`, `--local` (default), `--worktree`, or - `--file <config-file>`. - --[no-]includes:: Respect `include.*` directives in config files when looking up values. Defaults to `off` when a specific file is given (e.g., @@ -297,14 +286,64 @@ Valid `<type>`'s include: config files. --default <value>:: - When using `--get`, and the requested variable is not found, behave as if + When using `get`, and the requested variable is not found, behave as if <value> were the value assigned to that variable. +DEPRECATED MODES +---------------- + +The following modes have been deprecated in favor of subcommands. It is +recommended to migrate to the new syntax. + +'git config <name>':: + Replaced by `git config get <name>`. + +'git config <name> <value> [<value-pattern>]':: + Replaced by `git config set [--value=<pattern>] <name> <value>`. + +-l:: +--list:: + Replaced by `git config list`. + +--get <name> [<value-pattern>]:: + Replaced by `git config get [--value=<pattern>] <name>`. + +--get-all <name> [<value-pattern>]:: + Replaced by `git config get [--value=<pattern>] --all --show-names <name>`. + +--get-regexp <name-regexp>:: + Replaced by `git config get --all --show-names --regexp <name-regexp>`. + +--get-urlmatch <name> <URL>:: + Replaced by `git config get --all --show-names --url=<URL> <name>`. + +--get-color <name> [<default>]:: + Replaced by `git config get --type=color [--default=<default>] <name>`. + +--add <name> <value>:: + Replaced by `git config set --append <name> <value>`. + +--unset <name> [<value-pattern>]:: + Replaced by `git config unset [--value=<pattern>] <name>`. + +--unset-all <name> [<value-pattern>]:: + Replaced by `git config unset [--value=<pattern>] --all <name>`. + +--rename-section <old-name> <new-name>:: + Replaced by `git config rename-section <old-name> <new-name>`. + +--remove-section <name>:: + Replaced by `git config remove-section <name>`. + +-e:: +--edit:: + Replaced by `git config edit`. + CONFIGURATION ------------- `pager.config` is only respected when listing configuration, i.e., when -using `--list` or any of the `--get-*` which may return multiple results. -The default is to use a pager. +using `list` or `get` which may return multiple results. The default is to use +a pager. [[FILES]] FILES @@ -346,8 +385,8 @@ precedence over values read earlier. When multiple values are taken then all values of a key from all files will be used. By default, options are only written to the repository specific -configuration file. Note that this also affects options like `--replace-all` -and `--unset`. *'git config' will only ever change one file at a time*. +configuration file. Note that this also affects options like `set` +and `unset`. *'git config' will only ever change one file at a time*. You can limit which configuration sources are read from or written to by specifying the path of a file with the `--file` option, or by specifying a @@ -482,7 +521,7 @@ Given a .git/config like this: you can set the filemode to true with ------------ -% git config core.filemode true +% git config set core.filemode true ------------ The hypothetical proxy command entries actually have a postfix to discern @@ -490,7 +529,7 @@ what URL they apply to. Here is how to change the entry for kernel.org to "ssh". ------------ -% git config core.gitproxy '"ssh" for kernel.org' 'for kernel.org$' +% git config set --value='for kernel.org$' core.gitproxy '"ssh" for kernel.org' ------------ This makes sure that only the key/value pair for kernel.org is replaced. @@ -498,7 +537,7 @@ This makes sure that only the key/value pair for kernel.org is replaced. To delete the entry for renames, do ------------ -% git config --unset diff.renames +% git config unset diff.renames ------------ If you want to delete an entry for a multivar (like core.gitproxy above), @@ -507,51 +546,45 @@ you have to provide a regex matching the value of exactly one line. To query the value for a given key, do ------------ -% git config --get core.filemode ------------- - -or - ------------- -% git config core.filemode +% git config get core.filemode ------------ or, to query a multivar: ------------ -% git config --get core.gitproxy "for kernel.org$" +% git config get --value="for kernel.org$" core.gitproxy ------------ If you want to know all the values for a multivar, do: ------------ -% git config --get-all core.gitproxy +% git config get --all --show-names core.gitproxy ------------ If you like to live dangerously, you can replace *all* core.gitproxy by a new one with ------------ -% git config --replace-all core.gitproxy ssh +% git config set --all core.gitproxy ssh ------------ However, if you really only want to replace the line for the default proxy, i.e. the one without a "for ..." postfix, do something like this: ------------ -% git config core.gitproxy ssh '! for ' +% git config set --value='! for ' core.gitproxy ssh ------------ To actually match only values with an exclamation mark, you have to ------------ -% git config section.key value '[!]' +% git config set --value='[!]' section.key value ------------ To add a new proxy, without altering any of the existing ones, use ------------ -% git config --add core.gitproxy '"proxy-command" for example.com' +% git config set --append core.gitproxy '"proxy-command" for example.com' ------------ An example to use customized color from the configuration in your @@ -559,8 +592,8 @@ script: ------------ #!/bin/sh -WS=$(git config --get-color color.diff.whitespace "blue reverse") -RESET=$(git config --get-color "" "reset") +WS=$(git config get --type=color --default="blue reverse" color.diff.whitespace) +RESET=$(git config get --type=color --default="reset" "") echo "${WS}your whitespace color or blue reverse${RESET}" ------------ @@ -568,11 +601,11 @@ For URLs in `https://weak.example.com`, `http.sslVerify` is set to false, while it is set to `true` for all others: ------------ -% git config --type=bool --get-urlmatch http.sslverify https://good.example.com +% git config get --type=bool --url=https://good.example.com http.sslverify true -% git config --type=bool --get-urlmatch http.sslverify https://weak.example.com +% git config get --type=bool --url=https://weak.example.com http.sslverify false -% git config --get-urlmatch http https://weak.example.com +% git config get --url=https://weak.example.com http http.cookieFile /tmp/cookie.txt http.sslverify false ------------ diff --git a/git-merge-tree.html b/git-merge-tree.html index 4a9700b2d..e7c2c7d6f 100644 --- a/git-merge-tree.html +++ b/git-merge-tree.html @@ -858,6 +858,18 @@ etc. <div class="paragraph"><p>As the merge-base is provided directly, <branch1> and <branch2> do not need
to specify commits; trees are enough.</p></div>
</dd>
+<dt class="hdlist1">
+-X<option>
+</dt>
+<dt class="hdlist1">
+--strategy-option=<option>
+</dt>
+<dd>
+<p>
+ Pass the merge strategy-specific option through to the merge strategy.
+ See <a href="git-merge.html">git-merge(1)</a> for details.
+</p>
+</dd>
</dl></div>
</div>
</div>
@@ -1154,7 +1166,7 @@ large repositories).</p></div> <div id="footer">
<div id="footer-text">
Last updated
- 2024-03-07 16:01:15 PST
+ 2024-05-16 11:09:25 PDT
</div>
</div>
</body>
diff --git a/git-merge-tree.txt b/git-merge-tree.txt index dd388fa21..84cb2edf6 100644 --- a/git-merge-tree.txt +++ b/git-merge-tree.txt @@ -72,6 +72,11 @@ OPTIONS As the merge-base is provided directly, <branch1> and <branch2> do not need to specify commits; trees are enough. +-X<option>:: +--strategy-option=<option>:: + Pass the merge strategy-specific option through to the merge strategy. + See linkgit:git-merge[1] for details. + [[OUTPUT]] OUTPUT ------ diff --git a/git-remote-helpers.html b/git-remote-helpers.html index 93076e31f..e56977144 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">2024-05-13</span>
+<span id="revdate">2024-05-16</span>
</div>
<div id="content">
<div id="preamble">
diff --git a/git-tag.html b/git-tag.html index 12a354392..0b229bbeb 100644 --- a/git-tag.html +++ b/git-tag.html @@ -750,6 +750,7 @@ git-tag(1) Manual Page <div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>git tag</em> [-a | -s | -u <key-id>] [-f] [-m <msg> | -F <file>] [-e]
+ [(--trailer <token>[(=|:)<value>])…]
<tagname> [<commit> | <object>]
<em>git tag</em> -d <tagname>…
<em>git tag</em> [-n[<num>]] -l [--contains <commit>] [--no-contains <commit>]
@@ -771,8 +772,8 @@ to delete, list or verify tags.</p></div> creates a <em>tag</em> object, and requires a tag message. Unless
<code>-m <msg></code> or <code>-F <file></code> is given, an editor is started for the user to type
in the tag message.</p></div>
-<div class="paragraph"><p>If <code>-m <msg></code> or <code>-F <file></code> is given and <code>-a</code>, <code>-s</code>, and <code>-u <key-id></code>
-are absent, <code>-a</code> is implied.</p></div>
+<div class="paragraph"><p>If <code>-m <msg></code> or <code>-F <file></code> or <code>--trailer <token>[=<value>]</code> is given
+and <code>-a</code>, <code>-s</code>, and <code>-u <key-id></code> are absent, <code>-a</code> is implied.</p></div>
<div class="paragraph"><p>Otherwise, a tag reference that points directly at the given object
(i.e., a lightweight tag) is created.</p></div>
<div class="paragraph"><p>A GnuPG signed tag object will be created when <code>-s</code> or <code>-u
@@ -1040,6 +1041,22 @@ options for details.</p></div> </p>
</dd>
<dt class="hdlist1">
+--trailer <token>[(=|:)<value>]
+</dt>
+<dd>
+<p>
+ Specify a (<token>, <value>) pair that should be applied as a
+ trailer. (e.g. <code>git tag --trailer "Custom-Key: value"</code>
+ will add a "Custom-Key" trailer to the tag message.)
+ The <code>trailer.*</code> configuration variables
+ (<a href="git-interpret-trailers.html">git-interpret-trailers(1)</a>) can be used to define if
+ a duplicated trailer is omitted, where in the run of trailers
+ each trailer would appear, and other details.
+ The trailers can be extracted in <code>git tag --list</code>, using
+ <code>--format="%(trailers)"</code> placeholder.
+</p>
+</dd>
+<dt class="hdlist1">
-e
</dt>
<dt class="hdlist1">
@@ -1367,7 +1384,7 @@ commits and from none of the <code>--no-merged</code> commits are shown.</p></di <div id="footer">
<div id="footer-text">
Last updated
- 2024-02-08 15:45:59 PST
+ 2024-05-16 11:09:25 PDT
</div>
</div>
</body>
diff --git a/git-tag.txt b/git-tag.txt index 5fe519c31..4494729f5 100644 --- a/git-tag.txt +++ b/git-tag.txt @@ -10,6 +10,7 @@ SYNOPSIS -------- [verse] 'git tag' [-a | -s | -u <key-id>] [-f] [-m <msg> | -F <file>] [-e] + [(--trailer <token>[(=|:)<value>])...] <tagname> [<commit> | <object>] 'git tag' -d <tagname>... 'git tag' [-n[<num>]] -l [--contains <commit>] [--no-contains <commit>] @@ -31,8 +32,8 @@ creates a 'tag' object, and requires a tag message. Unless `-m <msg>` or `-F <file>` is given, an editor is started for the user to type in the tag message. -If `-m <msg>` or `-F <file>` is given and `-a`, `-s`, and `-u <key-id>` -are absent, `-a` is implied. +If `-m <msg>` or `-F <file>` or `--trailer <token>[=<value>]` is given +and `-a`, `-s`, and `-u <key-id>` are absent, `-a` is implied. Otherwise, a tag reference that points directly at the given object (i.e., a lightweight tag) is created. @@ -178,6 +179,17 @@ This option is only applicable when listing tags without annotation lines. Implies `-a` if none of `-a`, `-s`, or `-u <key-id>` is given. +--trailer <token>[(=|:)<value>]:: + Specify a (<token>, <value>) pair that should be applied as a + trailer. (e.g. `git tag --trailer "Custom-Key: value"` + will add a "Custom-Key" trailer to the tag message.) + The `trailer.*` configuration variables + (linkgit:git-interpret-trailers[1]) can be used to define if + a duplicated trailer is omitted, where in the run of trailers + each trailer would appear, and other details. + The trailers can be extracted in `git tag --list`, using + `--format="%(trailers)"` placeholder. + -e:: --edit:: The message taken from file with `-F` and command line with @@ -751,9 +751,10 @@ git(1) Manual Page <div class="verseblock">
<pre class="content"><em>git</em> [-v | --version] [-h | --help] [-C <path>] [-c <name>=<value>]
[--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]
- [-p|--paginate|-P|--no-pager] [--no-replace-objects] [--bare]
- [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]
- [--config-env=<name>=<envvar>] <command> [<args>]</pre>
+ [-p | --paginate | -P | --no-pager] [--no-replace-objects] [--no-lazy-fetch]
+ [--no-optional-locks] [--no-advice] [--bare] [--git-dir=<path>]
+ [--work-tree=<path>] [--namespace=<name>] [--config-env=<name>=<envvar>]
+ <command> [<args>]</pre>
<div class="attribution">
</div></div>
</div>
@@ -1017,6 +1018,23 @@ environment variable)</p></div> </p>
</dd>
<dt class="hdlist1">
+--no-optional-locks
+</dt>
+<dd>
+<p>
+ Do not perform optional operations that require locks. This is
+ equivalent to setting the <code>GIT_OPTIONAL_LOCKS</code> to <code>0</code>.
+</p>
+</dd>
+<dt class="hdlist1">
+--no-advice
+</dt>
+<dd>
+<p>
+ Disable all advice hints from being printed.
+</p>
+</dd>
+<dt class="hdlist1">
--literal-pathspecs
</dt>
<dd>
@@ -1058,15 +1076,6 @@ environment variable)</p></div> </p>
</dd>
<dt class="hdlist1">
---no-optional-locks
-</dt>
-<dd>
-<p>
- Do not perform optional operations that require locks. This is
- equivalent to setting the <code>GIT_OPTIONAL_LOCKS</code> to <code>0</code>.
-</p>
-</dd>
-<dt class="hdlist1">
--list-cmds=<group>[,<group>…]
</dt>
<dd>
@@ -3908,7 +3917,7 @@ the Git Security mailing list <<a href="mailto:git-security@googlegroups.com" <div id="footer">
<div id="footer-text">
Last updated
- 2024-05-14 07:52:20 PDT
+ 2024-05-16 11:09:25 PDT
</div>
</div>
</body>
@@ -11,9 +11,10 @@ SYNOPSIS [verse] 'git' [-v | --version] [-h | --help] [-C <path>] [-c <name>=<value>] [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path] - [-p|--paginate|-P|--no-pager] [--no-replace-objects] [--bare] - [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>] - [--config-env=<name>=<envvar>] <command> [<args>] + [-p | --paginate | -P | --no-pager] [--no-replace-objects] [--no-lazy-fetch] + [--no-optional-locks] [--no-advice] [--bare] [--git-dir=<path>] + [--work-tree=<path>] [--namespace=<name>] [--config-env=<name>=<envvar>] + <command> [<args>] DESCRIPTION ----------- @@ -186,6 +187,13 @@ If you just want to run git as if it was started in `<path>` then use This is equivalent to setting the `GIT_NO_LAZY_FETCH` environment variable to `1`. +--no-optional-locks:: + Do not perform optional operations that require locks. This is + equivalent to setting the `GIT_OPTIONAL_LOCKS` to `0`. + +--no-advice:: + Disable all advice hints from being printed. + --literal-pathspecs:: Treat pathspecs literally (i.e. no globbing, no pathspec magic). This is equivalent to setting the `GIT_LITERAL_PATHSPECS` environment @@ -207,10 +215,6 @@ If you just want to run git as if it was started in `<path>` then use Add "icase" magic to all pathspec. This is equivalent to setting the `GIT_ICASE_PATHSPECS` environment variable to `1`. ---no-optional-locks:: - Do not perform optional operations that require locks. This is - equivalent to setting the `GIT_OPTIONAL_LOCKS` to `0`. - --list-cmds=<group>[,<group>...]:: List commands by group. This is an internal/experimental option and may change or be removed in the future. Supported diff --git a/gitglossary.html b/gitglossary.html index 9bd523c7a..6ac49e32a 100644 --- a/gitglossary.html +++ b/gitglossary.html @@ -1711,7 +1711,8 @@ The most notable example is <code>HEAD</code>.</p></div> <p>
A "refspec" is used by <a href="#def_fetch">fetch</a> and
<a href="#def_push">push</a> to describe the mapping between remote
- <a href="#def_ref">ref</a> and local ref.
+ <a href="#def_ref">ref</a> and local ref. See <a href="git-fetch.html">git-fetch(1)</a> or
+ <a href="git-push.html">git-push(1)</a> for details.
</p>
</dd>
<dt class="hdlist1">
diff --git a/glossary-content.txt b/glossary-content.txt index d71b19995..1272809e1 100644 --- a/glossary-content.txt +++ b/glossary-content.txt @@ -576,7 +576,8 @@ The most notable example is `HEAD`. [[def_refspec]]refspec:: A "refspec" is used by <<def_fetch,fetch>> and <<def_push,push>> to describe the mapping between remote - <<def_ref,ref>> and local ref. + <<def_ref,ref>> and local ref. See linkgit:git-fetch[1] or + linkgit:git-push[1] for details. [[def_remote]]remote repository:: A <<def_repository,repository>> which is used to track the same diff --git a/howto/coordinate-embargoed-releases.html b/howto/coordinate-embargoed-releases.html index b62716b29..73a65520e 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
- 2024-05-14 07:52:43 PDT
+ 2024-05-16 11:09:48 PDT
</div>
</div>
</body>
diff --git a/howto/keep-canonical-history-correct.html b/howto/keep-canonical-history-correct.html index d7253ceeb..55931b9da 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">2024-05-13</span>
+<span id="revdate">2024-05-16</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
- 2024-05-14 07:52:43 PDT
+ 2024-05-16 11:09:48 PDT
</div>
</div>
</body>
diff --git a/howto/maintain-git.html b/howto/maintain-git.html index 16fa266b1..3dba8ba36 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">2024-05-13</span>
+<span id="revdate">2024-05-16</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
- 2024-05-14 07:52:43 PDT
+ 2024-05-16 11:09:48 PDT
</div>
</div>
</body>
diff --git a/howto/new-command.html b/howto/new-command.html index cbbaa7baa..d4eef5c61 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">2024-05-13</span>
+<span id="revdate">2024-05-16</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
- 2024-05-14 07:52:41 PDT
+ 2024-05-16 11:09:46 PDT
</div>
</div>
</body>
diff --git a/howto/rebase-from-internal-branch.html b/howto/rebase-from-internal-branch.html index f2f03ea75..d697037ab 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">2024-05-13</span>
+<span id="revdate">2024-05-16</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
- 2024-05-14 07:52:43 PDT
+ 2024-05-16 11:09:48 PDT
</div>
</div>
</body>
diff --git a/howto/rebuild-from-update-hook.html b/howto/rebuild-from-update-hook.html index 498a81621..cc4a5ef1f 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">2024-05-13</span>
+<span id="revdate">2024-05-16</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
- 2024-05-14 07:52:43 PDT
+ 2024-05-16 11:09:48 PDT
</div>
</div>
</body>
diff --git a/howto/recover-corrupted-blob-object.html b/howto/recover-corrupted-blob-object.html index 3b9021fbb..20f787e6a 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">2024-05-13</span>
+<span id="revdate">2024-05-16</span>
</div>
<div id="content">
<div id="preamble">
@@ -881,7 +881,7 @@ thing.</p></div> <div id="footer">
<div id="footer-text">
Last updated
- 2024-05-14 07:52:43 PDT
+ 2024-05-16 11:09:48 PDT
</div>
</div>
</body>
diff --git a/howto/recover-corrupted-object-harder.html b/howto/recover-corrupted-object-harder.html index 4ea832e10..16284a418 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">2024-05-13</span>
+<span id="revdate">2024-05-16</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
- 2024-05-14 07:52:43 PDT
+ 2024-05-16 11:09:48 PDT
</div>
</div>
</body>
diff --git a/howto/revert-a-faulty-merge.html b/howto/revert-a-faulty-merge.html index 67737041d..a760cd483 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">2024-05-13</span>
+<span id="revdate">2024-05-16</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
- 2024-05-14 07:52:42 PDT
+ 2024-05-16 11:09:47 PDT
</div>
</div>
</body>
diff --git a/howto/revert-branch-rebase.html b/howto/revert-branch-rebase.html index cf33c8791..ef20d7639 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">2024-05-13</span>
+<span id="revdate">2024-05-16</span>
</div>
<div id="content">
<div id="preamble">
@@ -908,7 +908,7 @@ Committed merge 7fb9b7262a1d1e0a47bbfdcbbcf50ce0635d3f8f <div id="footer">
<div id="footer-text">
Last updated
- 2024-05-14 07:52:42 PDT
+ 2024-05-16 11:09:47 PDT
</div>
</div>
</body>
diff --git a/howto/separating-topic-branches.html b/howto/separating-topic-branches.html index 03851c59b..79c509c8c 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">2024-05-13</span>
+<span id="revdate">2024-05-16</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
- 2024-05-14 07:52:42 PDT
+ 2024-05-16 11:09:47 PDT
</div>
</div>
</body>
diff --git a/howto/setup-git-server-over-http.html b/howto/setup-git-server-over-http.html index 113bf4d96..9e32fac85 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">2024-05-13</span>
+<span id="revdate">2024-05-16</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
- 2024-05-14 07:52:42 PDT
+ 2024-05-16 11:09:47 PDT
</div>
</div>
</body>
diff --git a/howto/update-hook-example.html b/howto/update-hook-example.html index a68d0f563..e8160738d 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">2024-05-13</span>
+<span id="revdate">2024-05-16</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
- 2024-05-14 07:52:42 PDT
+ 2024-05-16 11:09:47 PDT
</div>
</div>
</body>
diff --git a/howto/use-git-daemon.html b/howto/use-git-daemon.html index 24e106c72..556a854e8 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">2024-05-13</span>
+<span id="revdate">2024-05-16</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
- 2024-05-14 07:52:42 PDT
+ 2024-05-16 11:09:47 PDT
</div>
</div>
</body>
diff --git a/howto/using-merge-subtree.html b/howto/using-merge-subtree.html index f53f4e328..cd5be65b5 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">2024-05-13</span>
+<span id="revdate">2024-05-16</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
- 2024-05-14 07:52:42 PDT
+ 2024-05-16 11:09:47 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 0b6374b4a..5714ff49a 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">2024-05-13</span>
+<span id="revdate">2024-05-16</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
- 2024-05-14 07:52:42 PDT
+ 2024-05-16 11:09:47 PDT
</div>
</div>
</body>
diff --git a/technical/api-error-handling.html b/technical/api-error-handling.html index 5ee3319a5..f554d1ab2 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">2024-05-13</span>
+<span id="revdate">2024-05-16</span>
</div>
<div id="content">
<div id="preamble">
diff --git a/technical/api-index.html b/technical/api-index.html index 8061e21ba..53ecc8656 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">2024-05-13</span>
+<span id="revdate">2024-05-16</span>
</div>
<div id="content">
<div id="preamble">
diff --git a/technical/api-merge.html b/technical/api-merge.html index e38a1f283..1cfd7fe2f 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">2024-05-13</span>
+<span id="revdate">2024-05-16</span>
</div>
<div id="content">
<div id="preamble">
diff --git a/technical/api-parse-options.html b/technical/api-parse-options.html index ea15ec17d..bcbe02794 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">2024-05-13</span>
+<span id="revdate">2024-05-16</span>
</div>
<div id="content">
<div id="preamble">
diff --git a/technical/api-simple-ipc.html b/technical/api-simple-ipc.html index fcc5c805e..dc103facc 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">2024-05-13</span>
+<span id="revdate">2024-05-16</span>
</div>
<div id="content">
<div id="preamble">
diff --git a/technical/api-trace2.html b/technical/api-trace2.html index 43c484503..e34f20a56 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">2024-05-13</span>
+<span id="revdate">2024-05-16</span>
</div>
<div id="content">
<div id="preamble">
diff --git a/technical/bitmap-format.html b/technical/bitmap-format.html index 3e6ce006c..d66012dfb 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">2024-05-13</span>
+<span id="revdate">2024-05-16</span>
</div>
<div id="content">
<div class="sect1">
diff --git a/technical/bundle-uri.html b/technical/bundle-uri.html index 8a3ef9ae3..d0f0c3f51 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">2024-05-13</span>
+<span id="revdate">2024-05-16</span>
</div>
<div id="content">
<div id="preamble">
diff --git a/technical/hash-function-transition.html b/technical/hash-function-transition.html index 38c6a1714..b41794c94 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">2024-05-13</span>
+<span id="revdate">2024-05-16</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 2436f198c..e2f43c255 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">2024-05-13</span>
+<span id="revdate">2024-05-16</span>
</div>
<div id="content">
<div id="preamble">
diff --git a/technical/multi-pack-index.html b/technical/multi-pack-index.html index 3ab2fb019..51f79259d 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">2024-05-13</span>
+<span id="revdate">2024-05-16</span>
</div>
<div id="content">
<div id="preamble">
diff --git a/technical/pack-heuristics.html b/technical/pack-heuristics.html index 384651c67..8128269b8 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">2024-05-13</span>
+<span id="revdate">2024-05-16</span>
</div>
<div id="content">
<div id="preamble">
diff --git a/technical/parallel-checkout.html b/technical/parallel-checkout.html index 7c38025d8..8f4a20f53 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">2024-05-13</span>
+<span id="revdate">2024-05-16</span>
</div>
<div id="content">
<div id="preamble">
diff --git a/technical/partial-clone.html b/technical/partial-clone.html index 6ed039e80..4456de211 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">2024-05-13</span>
+<span id="revdate">2024-05-16</span>
</div>
<div id="content">
<div id="preamble">
diff --git a/technical/racy-git.html b/technical/racy-git.html index 1dfa7c0b1..509f00264 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">2024-05-13</span>
+<span id="revdate">2024-05-16</span>
</div>
<div id="content">
<div class="sect1">
diff --git a/technical/scalar.html b/technical/scalar.html index 0cfeac83b..f4edb09cd 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">2024-05-13</span>
+<span id="revdate">2024-05-16</span>
</div>
<div id="content">
<div id="preamble">
diff --git a/technical/send-pack-pipeline.html b/technical/send-pack-pipeline.html index ff980cc23..3d5349798 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">2024-05-13</span>
+<span id="revdate">2024-05-16</span>
</div>
<div id="content">
<div class="sect1">
diff --git a/technical/shallow.html b/technical/shallow.html index 0f6f9947d..5f8c95797 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">2024-05-13</span>
+<span id="revdate">2024-05-16</span>
</div>
<div id="content">
<div id="preamble">
diff --git a/technical/trivial-merge.html b/technical/trivial-merge.html index 10456ddef..9bb7b07f8 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">2024-05-13</span>
+<span id="revdate">2024-05-16</span>
</div>
<div id="content">
<div id="preamble">
diff --git a/technical/unit-tests.html b/technical/unit-tests.html index 98a82e467..9081f4e90 100644 --- a/technical/unit-tests.html +++ b/technical/unit-tests.html @@ -735,7 +735,7 @@ asciidoc.install(); <body class="article">
<div id="header">
<h1>Unit Testing</h1>
-<span id="revdate">2024-05-13</span>
+<span id="revdate">2024-05-16</span>
</div>
<div id="content">
<div id="preamble">
diff --git a/user-manual.html b/user-manual.html index be9210de2..cee84c707 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">2024-05-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">2024-05-16</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 @@ -2585,7 +2585,8 @@ The most notable example is <code class="literal">HEAD</code>.</p></dd><dt><span </span></dt><dd> A "refspec" is used by <a class="link" href="#def_fetch">fetch</a> and <a class="link" href="#def_push">push</a> to describe the mapping between remote - <a class="link" href="#def_ref">ref</a> and local ref. + <a class="link" href="#def_ref">ref</a> and local ref. See <a class="ulink" href="git-fetch.html" target="_top">git-fetch(1)</a> or + <a class="ulink" href="git-push.html" target="_top">git-push(1)</a> for details. </dd><dt><span class="term"> <a name="def_remote"></a>remote repository </span></dt><dd> |