Autogenerated HTML docs for v2.49.0-154-g9d22a
diff --git a/BreakingChanges.adoc b/BreakingChanges.adoc
index bdfad29..61bdd58 100644
--- a/BreakingChanges.adoc
+++ b/BreakingChanges.adoc
@@ -178,6 +178,12 @@
+
These features will be removed.
+* Support for "--stdin" option in the "name-rev" command was
+ deprecated (and hidden from the documentation) in the Git 2.40
+ timeframe, in preference to its synonym "--annotate-stdin". Git 3.0
+ removes the support for "--stdin" altogether.
+
+
== Superseded features that will not be deprecated
Some features have gained newer replacements that aim to improve the design in
diff --git a/BreakingChanges.html b/BreakingChanges.html
new file mode 100644
index 0000000..02b117b
--- /dev/null
+++ b/BreakingChanges.html
@@ -0,0 +1,754 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
+<head>
+<meta charset="UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
+<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
+<meta name="generator" content="Asciidoctor 2.0.23"/>
+<title>Upcoming breaking changes</title>
+<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700"/>
+<style>
+/*! Asciidoctor default stylesheet | MIT License | https://asciidoctor.org */
+/* Uncomment the following line when using as a custom stylesheet */
+/* @import "https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700"; */
+html{font-family:sans-serif;-webkit-text-size-adjust:100%}
+a{background:none}
+a:focus{outline:thin dotted}
+a:active,a:hover{outline:0}
+h1{font-size:2em;margin:.67em 0}
+b,strong{font-weight:bold}
+abbr{font-size:.9em}
+abbr[title]{cursor:help;border-bottom:1px dotted #dddddf;text-decoration:none}
+dfn{font-style:italic}
+hr{height:0}
+mark{background:#ff0;color:#000}
+code,kbd,pre,samp{font-family:monospace;font-size:1em}
+pre{white-space:pre-wrap}
+q{quotes:"\201C" "\201D" "\2018" "\2019"}
+small{font-size:80%}
+sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}
+sup{top:-.5em}
+sub{bottom:-.25em}
+img{border:0}
+svg:not(:root){overflow:hidden}
+figure{margin:0}
+audio,video{display:inline-block}
+audio:not([controls]){display:none;height:0}
+fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}
+legend{border:0;padding:0}
+button,input,select,textarea{font-family:inherit;font-size:100%;margin:0}
+button,input{line-height:normal}
+button,select{text-transform:none}
+button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}
+button[disabled],html input[disabled]{cursor:default}
+input[type=checkbox],input[type=radio]{padding:0}
+button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}
+textarea{overflow:auto;vertical-align:top}
+table{border-collapse:collapse;border-spacing:0}
+*,::before,::after{box-sizing:border-box}
+html,body{font-size:100%}
+body{background:#fff;color:rgba(0,0,0,.8);padding:0;margin:0;font-family:"Noto Serif","DejaVu Serif",serif;line-height:1;position:relative;cursor:auto;-moz-tab-size:4;-o-tab-size:4;tab-size:4;word-wrap:anywhere;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}
+a:hover{cursor:pointer}
+img,object,embed{max-width:100%;height:auto}
+object,embed{height:100%}
+img{-ms-interpolation-mode:bicubic}
+.left{float:left!important}
+.right{float:right!important}
+.text-left{text-align:left!important}
+.text-right{text-align:right!important}
+.text-center{text-align:center!important}
+.text-justify{text-align:justify!important}
+.hide{display:none}
+img,object,svg{display:inline-block;vertical-align:middle}
+textarea{height:auto;min-height:50px}
+select{width:100%}
+.subheader,.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{line-height:1.45;color:#7a2518;font-weight:400;margin-top:0;margin-bottom:.25em}
+div,dl,dt,dd,ul,ol,li,h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6,pre,form,p,blockquote,th,td{margin:0;padding:0}
+a{color:#2156a5;text-decoration:underline;line-height:inherit}
+a:hover,a:focus{color:#1d4b8f}
+a img{border:0}
+p{line-height:1.6;margin-bottom:1.25em;text-rendering:optimizeLegibility}
+p aside{font-size:.875em;line-height:1.35;font-style:italic}
+h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{font-family:"Open Sans","DejaVu Sans",sans-serif;font-weight:300;font-style:normal;color:#ba3925;text-rendering:optimizeLegibility;margin-top:1em;margin-bottom:.5em;line-height:1.0125em}
+h1 small,h2 small,h3 small,#toctitle small,.sidebarblock>.content>.title small,h4 small,h5 small,h6 small{font-size:60%;color:#e99b8f;line-height:0}
+h1{font-size:2.125em}
+h2{font-size:1.6875em}
+h3,#toctitle,.sidebarblock>.content>.title{font-size:1.375em}
+h4,h5{font-size:1.125em}
+h6{font-size:1em}
+hr{border:solid #dddddf;border-width:1px 0 0;clear:both;margin:1.25em 0 1.1875em}
+em,i{font-style:italic;line-height:inherit}
+strong,b{font-weight:bold;line-height:inherit}
+small{font-size:60%;line-height:inherit}
+code{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;font-weight:400;color:rgba(0,0,0,.9)}
+ul,ol,dl{line-height:1.6;margin-bottom:1.25em;list-style-position:outside;font-family:inherit}
+ul,ol{margin-left:1.5em}
+ul li ul,ul li ol{margin-left:1.25em;margin-bottom:0}
+ul.circle{list-style-type:circle}
+ul.disc{list-style-type:disc}
+ul.square{list-style-type:square}
+ul.circle ul:not([class]),ul.disc ul:not([class]),ul.square ul:not([class]){list-style:inherit}
+ol li ul,ol li ol{margin-left:1.25em;margin-bottom:0}
+dl dt{margin-bottom:.3125em;font-weight:bold}
+dl dd{margin-bottom:1.25em}
+blockquote{margin:0 0 1.25em;padding:.5625em 1.25em 0 1.1875em;border-left:1px solid #ddd}
+blockquote,blockquote p{line-height:1.6;color:rgba(0,0,0,.85)}
+@media screen and (min-width:768px){h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2}
+h1{font-size:2.75em}
+h2{font-size:2.3125em}
+h3,#toctitle,.sidebarblock>.content>.title{font-size:1.6875em}
+h4{font-size:1.4375em}}
+table{background:#fff;margin-bottom:1.25em;border:1px solid #dedede;word-wrap:normal}
+table thead,table tfoot{background:#f7f8f7}
+table thead tr th,table thead tr td,table tfoot tr th,table tfoot tr td{padding:.5em .625em .625em;font-size:inherit;color:rgba(0,0,0,.8);text-align:left}
+table tr th,table tr td{padding:.5625em .625em;font-size:inherit;color:rgba(0,0,0,.8)}
+table tr.even,table tr.alt{background:#f8f8f7}
+table thead tr th,table tfoot tr th,table tbody tr td,table tr td,table tfoot tr td{line-height:1.6}
+h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2;word-spacing:-.05em}
+h1 strong,h2 strong,h3 strong,#toctitle strong,.sidebarblock>.content>.title strong,h4 strong,h5 strong,h6 strong{font-weight:400}
+.center{margin-left:auto;margin-right:auto}
+.stretch{width:100%}
+.clearfix::before,.clearfix::after,.float-group::before,.float-group::after{content:" ";display:table}
+.clearfix::after,.float-group::after{clear:both}
+:not(pre).nobreak{word-wrap:normal}
+:not(pre).nowrap{white-space:nowrap}
+:not(pre).pre-wrap{white-space:pre-wrap}
+:not(pre):not([class^=L])>code{font-size:.9375em;font-style:normal!important;letter-spacing:0;padding:.1em .5ex;word-spacing:-.15em;background:#f7f7f8;border-radius:4px;line-height:1.45;text-rendering:optimizeSpeed}
+pre{color:rgba(0,0,0,.9);font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;line-height:1.45;text-rendering:optimizeSpeed}
+pre code,pre pre{color:inherit;font-size:inherit;line-height:inherit}
+pre>code{display:block}
+pre.nowrap,pre.nowrap pre{white-space:pre;word-wrap:normal}
+em em{font-style:normal}
+strong strong{font-weight:400}
+.keyseq{color:rgba(51,51,51,.8)}
+kbd{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;display:inline-block;color:rgba(0,0,0,.8);font-size:.65em;line-height:1.45;background:#f7f7f7;border:1px solid #ccc;border-radius:3px;box-shadow:0 1px 0 rgba(0,0,0,.2),inset 0 0 0 .1em #fff;margin:0 .15em;padding:.2em .5em;vertical-align:middle;position:relative;top:-.1em;white-space:nowrap}
+.keyseq kbd:first-child{margin-left:0}
+.keyseq kbd:last-child{margin-right:0}
+.menuseq,.menuref{color:#000}
+.menuseq b:not(.caret),.menuref{font-weight:inherit}
+.menuseq{word-spacing:-.02em}
+.menuseq b.caret{font-size:1.25em;line-height:.8}
+.menuseq i.caret{font-weight:bold;text-align:center;width:.45em}
+b.button::before,b.button::after{position:relative;top:-1px;font-weight:400}
+b.button::before{content:"[";padding:0 3px 0 2px}
+b.button::after{content:"]";padding:0 2px 0 3px}
+p a>code:hover{color:rgba(0,0,0,.9)}
+#header,#content,#footnotes,#footer{width:100%;margin:0 auto;max-width:62.5em;*zoom:1;position:relative;padding-left:.9375em;padding-right:.9375em}
+#header::before,#header::after,#content::before,#content::after,#footnotes::before,#footnotes::after,#footer::before,#footer::after{content:" ";display:table}
+#header::after,#content::after,#footnotes::after,#footer::after{clear:both}
+#content{margin-top:1.25em}
+#content::before{content:none}
+#header>h1:first-child{color:rgba(0,0,0,.85);margin-top:2.25rem;margin-bottom:0}
+#header>h1:first-child+#toc{margin-top:8px;border-top:1px solid #dddddf}
+#header>h1:only-child{border-bottom:1px solid #dddddf;padding-bottom:8px}
+#header .details{border-bottom:1px solid #dddddf;line-height:1.45;padding-top:.25em;padding-bottom:.25em;padding-left:.25em;color:rgba(0,0,0,.6);display:flex;flex-flow:row wrap}
+#header .details span:first-child{margin-left:-.125em}
+#header .details span.email a{color:rgba(0,0,0,.85)}
+#header .details br{display:none}
+#header .details br+span::before{content:"\00a0\2013\00a0"}
+#header .details br+span.author::before{content:"\00a0\22c5\00a0";color:rgba(0,0,0,.85)}
+#header .details br+span#revremark::before{content:"\00a0|\00a0"}
+#header #revnumber{text-transform:capitalize}
+#header #revnumber::after{content:"\00a0"}
+#content>h1:first-child:not([class]){color:rgba(0,0,0,.85);border-bottom:1px solid #dddddf;padding-bottom:8px;margin-top:0;padding-top:1rem;margin-bottom:1.25rem}
+#toc{border-bottom:1px solid #e7e7e9;padding-bottom:.5em}
+#toc>ul{margin-left:.125em}
+#toc ul.sectlevel0>li>a{font-style:italic}
+#toc ul.sectlevel0 ul.sectlevel1{margin:.5em 0}
+#toc ul{font-family:"Open Sans","DejaVu Sans",sans-serif;list-style-type:none}
+#toc li{line-height:1.3334;margin-top:.3334em}
+#toc a{text-decoration:none}
+#toc a:active{text-decoration:underline}
+#toctitle{color:#7a2518;font-size:1.2em}
+@media screen and (min-width:768px){#toctitle{font-size:1.375em}
+body.toc2{padding-left:15em;padding-right:0}
+body.toc2 #header>h1:nth-last-child(2){border-bottom:1px solid #dddddf;padding-bottom:8px}
+#toc.toc2{margin-top:0!important;background:#f8f8f7;position:fixed;width:15em;left:0;top:0;border-right:1px solid #e7e7e9;border-top-width:0!important;border-bottom-width:0!important;z-index:1000;padding:1.25em 1em;height:100%;overflow:auto}
+#toc.toc2 #toctitle{margin-top:0;margin-bottom:.8rem;font-size:1.2em}
+#toc.toc2>ul{font-size:.9em;margin-bottom:0}
+#toc.toc2 ul ul{margin-left:0;padding-left:1em}
+#toc.toc2 ul.sectlevel0 ul.sectlevel1{padding-left:0;margin-top:.5em;margin-bottom:.5em}
+body.toc2.toc-right{padding-left:0;padding-right:15em}
+body.toc2.toc-right #toc.toc2{border-right-width:0;border-left:1px solid #e7e7e9;left:auto;right:0}}
+@media screen and (min-width:1280px){body.toc2{padding-left:20em;padding-right:0}
+#toc.toc2{width:20em}
+#toc.toc2 #toctitle{font-size:1.375em}
+#toc.toc2>ul{font-size:.95em}
+#toc.toc2 ul ul{padding-left:1.25em}
+body.toc2.toc-right{padding-left:0;padding-right:20em}}
+#content #toc{border:1px solid #e0e0dc;margin-bottom:1.25em;padding:1.25em;background:#f8f8f7;border-radius:4px}
+#content #toc>:first-child{margin-top:0}
+#content #toc>:last-child{margin-bottom:0}
+#footer{max-width:none;background:rgba(0,0,0,.8);padding:1.25em}
+#footer-text{color:hsla(0,0%,100%,.8);line-height:1.44}
+#content{margin-bottom:.625em}
+.sect1{padding-bottom:.625em}
+@media screen and (min-width:768px){#content{margin-bottom:1.25em}
+.sect1{padding-bottom:1.25em}}
+.sect1:last-child{padding-bottom:0}
+.sect1+.sect1{border-top:1px solid #e7e7e9}
+#content h1>a.anchor,h2>a.anchor,h3>a.anchor,#toctitle>a.anchor,.sidebarblock>.content>.title>a.anchor,h4>a.anchor,h5>a.anchor,h6>a.anchor{position:absolute;z-index:1001;width:1.5ex;margin-left:-1.5ex;display:block;text-decoration:none!important;visibility:hidden;text-align:center;font-weight:400}
+#content h1>a.anchor::before,h2>a.anchor::before,h3>a.anchor::before,#toctitle>a.anchor::before,.sidebarblock>.content>.title>a.anchor::before,h4>a.anchor::before,h5>a.anchor::before,h6>a.anchor::before{content:"\00A7";font-size:.85em;display:block;padding-top:.1em}
+#content h1:hover>a.anchor,#content h1>a.anchor:hover,h2:hover>a.anchor,h2>a.anchor:hover,h3:hover>a.anchor,#toctitle:hover>a.anchor,.sidebarblock>.content>.title:hover>a.anchor,h3>a.anchor:hover,#toctitle>a.anchor:hover,.sidebarblock>.content>.title>a.anchor:hover,h4:hover>a.anchor,h4>a.anchor:hover,h5:hover>a.anchor,h5>a.anchor:hover,h6:hover>a.anchor,h6>a.anchor:hover{visibility:visible}
+#content h1>a.link,h2>a.link,h3>a.link,#toctitle>a.link,.sidebarblock>.content>.title>a.link,h4>a.link,h5>a.link,h6>a.link{color:#ba3925;text-decoration:none}
+#content h1>a.link:hover,h2>a.link:hover,h3>a.link:hover,#toctitle>a.link:hover,.sidebarblock>.content>.title>a.link:hover,h4>a.link:hover,h5>a.link:hover,h6>a.link:hover{color:#a53221}
+details,.audioblock,.imageblock,.literalblock,.listingblock,.stemblock,.videoblock{margin-bottom:1.25em}
+details{margin-left:1.25rem}
+details>summary{cursor:pointer;display:block;position:relative;line-height:1.6;margin-bottom:.625rem;outline:none;-webkit-tap-highlight-color:transparent}
+details>summary::-webkit-details-marker{display:none}
+details>summary::before{content:"";border:solid transparent;border-left:solid;border-width:.3em 0 .3em .5em;position:absolute;top:.5em;left:-1.25rem;transform:translateX(15%)}
+details[open]>summary::before{border:solid transparent;border-top:solid;border-width:.5em .3em 0;transform:translateY(15%)}
+details>summary::after{content:"";width:1.25rem;height:1em;position:absolute;top:.3em;left:-1.25rem}
+.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{text-rendering:optimizeLegibility;text-align:left;font-family:"Noto Serif","DejaVu Serif",serif;font-size:1rem;font-style:italic}
+table.tableblock.fit-content>caption.title{white-space:nowrap;width:0}
+.paragraph.lead>p,#preamble>.sectionbody>[class=paragraph]:first-of-type p{font-size:1.21875em;line-height:1.6;color:rgba(0,0,0,.85)}
+.admonitionblock>table{border-collapse:separate;border:0;background:none;width:100%}
+.admonitionblock>table td.icon{text-align:center;width:80px}
+.admonitionblock>table td.icon img{max-width:none}
+.admonitionblock>table td.icon .title{font-weight:bold;font-family:"Open Sans","DejaVu Sans",sans-serif;text-transform:uppercase}
+.admonitionblock>table td.content{padding-left:1.125em;padding-right:1.25em;border-left:1px solid #dddddf;color:rgba(0,0,0,.6);word-wrap:anywhere}
+.admonitionblock>table td.content>:last-child>:last-child{margin-bottom:0}
+.exampleblock>.content{border:1px solid #e6e6e6;margin-bottom:1.25em;padding:1.25em;background:#fff;border-radius:4px}
+.sidebarblock{border:1px solid #dbdbd6;margin-bottom:1.25em;padding:1.25em;background:#f3f3f2;border-radius:4px}
+.sidebarblock>.content>.title{color:#7a2518;margin-top:0;text-align:center}
+.exampleblock>.content>:first-child,.sidebarblock>.content>:first-child{margin-top:0}
+.exampleblock>.content>:last-child,.exampleblock>.content>:last-child>:last-child,.exampleblock>.content .olist>ol>li:last-child>:last-child,.exampleblock>.content .ulist>ul>li:last-child>:last-child,.exampleblock>.content .qlist>ol>li:last-child>:last-child,.sidebarblock>.content>:last-child,.sidebarblock>.content>:last-child>:last-child,.sidebarblock>.content .olist>ol>li:last-child>:last-child,.sidebarblock>.content .ulist>ul>li:last-child>:last-child,.sidebarblock>.content .qlist>ol>li:last-child>:last-child{margin-bottom:0}
+.literalblock pre,.listingblock>.content>pre{border-radius:4px;overflow-x:auto;padding:1em;font-size:.8125em}
+@media screen and (min-width:768px){.literalblock pre,.listingblock>.content>pre{font-size:.90625em}}
+@media screen and (min-width:1280px){.literalblock pre,.listingblock>.content>pre{font-size:1em}}
+.literalblock pre,.listingblock>.content>pre:not(.highlight),.listingblock>.content>pre[class=highlight],.listingblock>.content>pre[class^="highlight "]{background:#f7f7f8}
+.literalblock.output pre{color:#f7f7f8;background:rgba(0,0,0,.9)}
+.listingblock>.content{position:relative}
+.listingblock code[data-lang]::before{display:none;content:attr(data-lang);position:absolute;font-size:.75em;top:.425rem;right:.5rem;line-height:1;text-transform:uppercase;color:inherit;opacity:.5}
+.listingblock:hover code[data-lang]::before{display:block}
+.listingblock.terminal pre .command::before{content:attr(data-prompt);padding-right:.5em;color:inherit;opacity:.5}
+.listingblock.terminal pre .command:not([data-prompt])::before{content:"$"}
+.listingblock pre.highlightjs{padding:0}
+.listingblock pre.highlightjs>code{padding:1em;border-radius:4px}
+.listingblock pre.prettyprint{border-width:0}
+.prettyprint{background:#f7f7f8}
+pre.prettyprint .linenums{line-height:1.45;margin-left:2em}
+pre.prettyprint li{background:none;list-style-type:inherit;padding-left:0}
+pre.prettyprint li code[data-lang]::before{opacity:1}
+pre.prettyprint li:not(:first-child) code[data-lang]::before{display:none}
+table.linenotable{border-collapse:separate;border:0;margin-bottom:0;background:none}
+table.linenotable td[class]{color:inherit;vertical-align:top;padding:0;line-height:inherit;white-space:normal}
+table.linenotable td.code{padding-left:.75em}
+table.linenotable td.linenos,pre.pygments .linenos{border-right:1px solid;opacity:.35;padding-right:.5em;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}
+pre.pygments span.linenos{display:inline-block;margin-right:.75em}
+.quoteblock{margin:0 1em 1.25em 1.5em;display:table}
+.quoteblock:not(.excerpt)>.title{margin-left:-1.5em;margin-bottom:.75em}
+.quoteblock blockquote,.quoteblock p{color:rgba(0,0,0,.85);font-size:1.15rem;line-height:1.75;word-spacing:.1em;letter-spacing:0;font-style:italic;text-align:justify}
+.quoteblock blockquote{margin:0;padding:0;border:0}
+.quoteblock blockquote::before{content:"\201c";float:left;font-size:2.75em;font-weight:bold;line-height:.6em;margin-left:-.6em;color:#7a2518;text-shadow:0 1px 2px rgba(0,0,0,.1)}
+.quoteblock blockquote>.paragraph:last-child p{margin-bottom:0}
+.quoteblock .attribution{margin-top:.75em;margin-right:.5ex;text-align:right}
+.verseblock{margin:0 1em 1.25em}
+.verseblock pre{font-family:"Open Sans","DejaVu Sans",sans-serif;font-size:1.15rem;color:rgba(0,0,0,.85);font-weight:300;text-rendering:optimizeLegibility}
+.verseblock pre strong{font-weight:400}
+.verseblock .attribution{margin-top:1.25rem;margin-left:.5ex}
+.quoteblock .attribution,.verseblock .attribution{font-size:.9375em;line-height:1.45;font-style:italic}
+.quoteblock .attribution br,.verseblock .attribution br{display:none}
+.quoteblock .attribution cite,.verseblock .attribution cite{display:block;letter-spacing:-.025em;color:rgba(0,0,0,.6)}
+.quoteblock.abstract blockquote::before,.quoteblock.excerpt blockquote::before,.quoteblock .quoteblock blockquote::before{display:none}
+.quoteblock.abstract blockquote,.quoteblock.abstract p,.quoteblock.excerpt blockquote,.quoteblock.excerpt p,.quoteblock .quoteblock blockquote,.quoteblock .quoteblock p{line-height:1.6;word-spacing:0}
+.quoteblock.abstract{margin:0 1em 1.25em;display:block}
+.quoteblock.abstract>.title{margin:0 0 .375em;font-size:1.15em;text-align:center}
+.quoteblock.excerpt>blockquote,.quoteblock .quoteblock{padding:0 0 .25em 1em;border-left:.25em solid #dddddf}
+.quoteblock.excerpt,.quoteblock .quoteblock{margin-left:0}
+.quoteblock.excerpt blockquote,.quoteblock.excerpt p,.quoteblock .quoteblock blockquote,.quoteblock .quoteblock p{color:inherit;font-size:1.0625rem}
+.quoteblock.excerpt .attribution,.quoteblock .quoteblock .attribution{color:inherit;font-size:.85rem;text-align:left;margin-right:0}
+p.tableblock:last-child{margin-bottom:0}
+td.tableblock>.content{margin-bottom:1.25em;word-wrap:anywhere}
+td.tableblock>.content>:last-child{margin-bottom:-1.25em}
+table.tableblock,th.tableblock,td.tableblock{border:0 solid #dedede}
+table.grid-all>*>tr>*{border-width:1px}
+table.grid-cols>*>tr>*{border-width:0 1px}
+table.grid-rows>*>tr>*{border-width:1px 0}
+table.frame-all{border-width:1px}
+table.frame-ends{border-width:1px 0}
+table.frame-sides{border-width:0 1px}
+table.frame-none>colgroup+*>:first-child>*,table.frame-sides>colgroup+*>:first-child>*{border-top-width:0}
+table.frame-none>:last-child>:last-child>*,table.frame-sides>:last-child>:last-child>*{border-bottom-width:0}
+table.frame-none>*>tr>:first-child,table.frame-ends>*>tr>:first-child{border-left-width:0}
+table.frame-none>*>tr>:last-child,table.frame-ends>*>tr>:last-child{border-right-width:0}
+table.stripes-all>*>tr,table.stripes-odd>*>tr:nth-of-type(odd),table.stripes-even>*>tr:nth-of-type(even),table.stripes-hover>*>tr:hover{background:#f8f8f7}
+th.halign-left,td.halign-left{text-align:left}
+th.halign-right,td.halign-right{text-align:right}
+th.halign-center,td.halign-center{text-align:center}
+th.valign-top,td.valign-top{vertical-align:top}
+th.valign-bottom,td.valign-bottom{vertical-align:bottom}
+th.valign-middle,td.valign-middle{vertical-align:middle}
+table thead th,table tfoot th{font-weight:bold}
+tbody tr th{background:#f7f8f7}
+tbody tr th,tbody tr th p,tfoot tr th,tfoot tr th p{color:rgba(0,0,0,.8);font-weight:bold}
+p.tableblock>code:only-child{background:none;padding:0}
+p.tableblock{font-size:1em}
+ol{margin-left:1.75em}
+ul li ol{margin-left:1.5em}
+dl dd{margin-left:1.125em}
+dl dd:last-child,dl dd:last-child>:last-child{margin-bottom:0}
+li p,ul dd,ol dd,.olist .olist,.ulist .ulist,.ulist .olist,.olist .ulist{margin-bottom:.625em}
+ul.checklist,ul.none,ol.none,ul.no-bullet,ol.no-bullet,ol.unnumbered,ul.unstyled,ol.unstyled{list-style-type:none}
+ul.no-bullet,ol.no-bullet,ol.unnumbered{margin-left:.625em}
+ul.unstyled,ol.unstyled{margin-left:0}
+li>p:empty:only-child::before{content:"";display:inline-block}
+ul.checklist>li>p:first-child{margin-left:-1em}
+ul.checklist>li>p:first-child>.fa-square-o:first-child,ul.checklist>li>p:first-child>.fa-check-square-o:first-child{width:1.25em;font-size:.8em;position:relative;bottom:.125em}
+ul.checklist>li>p:first-child>input[type=checkbox]:first-child{margin-right:.25em}
+ul.inline{display:flex;flex-flow:row wrap;list-style:none;margin:0 0 .625em -1.25em}
+ul.inline>li{margin-left:1.25em}
+.unstyled dl dt{font-weight:400;font-style:normal}
+ol.arabic{list-style-type:decimal}
+ol.decimal{list-style-type:decimal-leading-zero}
+ol.loweralpha{list-style-type:lower-alpha}
+ol.upperalpha{list-style-type:upper-alpha}
+ol.lowerroman{list-style-type:lower-roman}
+ol.upperroman{list-style-type:upper-roman}
+ol.lowergreek{list-style-type:lower-greek}
+.hdlist>table,.colist>table{border:0;background:none}
+.hdlist>table>tbody>tr,.colist>table>tbody>tr{background:none}
+td.hdlist1,td.hdlist2{vertical-align:top;padding:0 .625em}
+td.hdlist1{font-weight:bold;padding-bottom:1.25em}
+td.hdlist2{word-wrap:anywhere}
+.literalblock+.colist,.listingblock+.colist{margin-top:-.5em}
+.colist td:not([class]):first-child{padding:.4em .75em 0;line-height:1;vertical-align:top}
+.colist td:not([class]):first-child img{max-width:none}
+.colist td:not([class]):last-child{padding:.25em 0}
+.thumb,.th{line-height:0;display:inline-block;border:4px solid #fff;box-shadow:0 0 0 1px #ddd}
+.imageblock.left{margin:.25em .625em 1.25em 0}
+.imageblock.right{margin:.25em 0 1.25em .625em}
+.imageblock>.title{margin-bottom:0}
+.imageblock.thumb,.imageblock.th{border-width:6px}
+.imageblock.thumb>.title,.imageblock.th>.title{padding:0 .125em}
+.image.left,.image.right{margin-top:.25em;margin-bottom:.25em;display:inline-block;line-height:0}
+.image.left{margin-right:.625em}
+.image.right{margin-left:.625em}
+a.image{text-decoration:none;display:inline-block}
+a.image object{pointer-events:none}
+sup.footnote,sup.footnoteref{font-size:.875em;position:static;vertical-align:super}
+sup.footnote a,sup.footnoteref a{text-decoration:none}
+sup.footnote a:active,sup.footnoteref a:active,#footnotes .footnote a:first-of-type:active{text-decoration:underline}
+#footnotes{padding-top:.75em;padding-bottom:.75em;margin-bottom:.625em}
+#footnotes hr{width:20%;min-width:6.25em;margin:-.25em 0 .75em;border-width:1px 0 0}
+#footnotes .footnote{padding:0 .375em 0 .225em;line-height:1.3334;font-size:.875em;margin-left:1.2em;margin-bottom:.2em}
+#footnotes .footnote a:first-of-type{font-weight:bold;text-decoration:none;margin-left:-1.05em}
+#footnotes .footnote:last-of-type{margin-bottom:0}
+#content #footnotes{margin-top:-.625em;margin-bottom:0;padding:.75em 0}
+div.unbreakable{page-break-inside:avoid}
+.big{font-size:larger}
+.small{font-size:smaller}
+.underline{text-decoration:underline}
+.overline{text-decoration:overline}
+.line-through{text-decoration:line-through}
+.aqua{color:#00bfbf}
+.aqua-background{background:#00fafa}
+.black{color:#000}
+.black-background{background:#000}
+.blue{color:#0000bf}
+.blue-background{background:#0000fa}
+.fuchsia{color:#bf00bf}
+.fuchsia-background{background:#fa00fa}
+.gray{color:#606060}
+.gray-background{background:#7d7d7d}
+.green{color:#006000}
+.green-background{background:#007d00}
+.lime{color:#00bf00}
+.lime-background{background:#00fa00}
+.maroon{color:#600000}
+.maroon-background{background:#7d0000}
+.navy{color:#000060}
+.navy-background{background:#00007d}
+.olive{color:#606000}
+.olive-background{background:#7d7d00}
+.purple{color:#600060}
+.purple-background{background:#7d007d}
+.red{color:#bf0000}
+.red-background{background:#fa0000}
+.silver{color:#909090}
+.silver-background{background:#bcbcbc}
+.teal{color:#006060}
+.teal-background{background:#007d7d}
+.white{color:#bfbfbf}
+.white-background{background:#fafafa}
+.yellow{color:#bfbf00}
+.yellow-background{background:#fafa00}
+span.icon>.fa{cursor:default}
+a span.icon>.fa{cursor:inherit}
+.admonitionblock td.icon [class^="fa icon-"]{font-size:2.5em;text-shadow:1px 1px 2px rgba(0,0,0,.5);cursor:default}
+.admonitionblock td.icon .icon-note::before{content:"\f05a";color:#19407c}
+.admonitionblock td.icon .icon-tip::before{content:"\f0eb";text-shadow:1px 1px 2px rgba(155,155,0,.8);color:#111}
+.admonitionblock td.icon .icon-warning::before{content:"\f071";color:#bf6900}
+.admonitionblock td.icon .icon-caution::before{content:"\f06d";color:#bf3400}
+.admonitionblock td.icon .icon-important::before{content:"\f06a";color:#bf0000}
+.conum[data-value]{display:inline-block;color:#fff!important;background:rgba(0,0,0,.8);border-radius:50%;text-align:center;font-size:.75em;width:1.67em;height:1.67em;line-height:1.67em;font-family:"Open Sans","DejaVu Sans",sans-serif;font-style:normal;font-weight:bold}
+.conum[data-value] *{color:#fff!important}
+.conum[data-value]+b{display:none}
+.conum[data-value]::after{content:attr(data-value)}
+pre .conum[data-value]{position:relative;top:-.125em}
+b.conum *{color:inherit!important}
+.conum:not([data-value]):empty{display:none}
+dt,th.tableblock,td.content,div.footnote{text-rendering:optimizeLegibility}
+h1,h2,p,td.content,span.alt,summary{letter-spacing:-.01em}
+p strong,td.content strong,div.footnote strong{letter-spacing:-.005em}
+p,blockquote,dt,td.content,td.hdlist1,span.alt,summary{font-size:1.0625rem}
+p{margin-bottom:1.25rem}
+.sidebarblock p,.sidebarblock dt,.sidebarblock td.content,p.tableblock{font-size:1em}
+.exampleblock>.content{background:#fffef7;border-color:#e0e0dc;box-shadow:0 1px 4px #e0e0dc}
+.print-only{display:none!important}
+@page{margin:1.25cm .75cm}
+@media print{*{box-shadow:none!important;text-shadow:none!important}
+html{font-size:80%}
+a{color:inherit!important;text-decoration:underline!important}
+a.bare,a[href^="#"],a[href^="mailto:"]{text-decoration:none!important}
+a[href^="http:"]:not(.bare)::after,a[href^="https:"]:not(.bare)::after{content:"(" attr(href) ")";display:inline-block;font-size:.875em;padding-left:.25em}
+abbr[title]{border-bottom:1px dotted}
+abbr[title]::after{content:" (" attr(title) ")"}
+pre,blockquote,tr,img,object,svg{page-break-inside:avoid}
+thead{display:table-header-group}
+svg{max-width:100%}
+p,blockquote,dt,td.content{font-size:1em;orphans:3;widows:3}
+h2,h3,#toctitle,.sidebarblock>.content>.title{page-break-after:avoid}
+#header,#content,#footnotes,#footer{max-width:none}
+#toc,.sidebarblock,.exampleblock>.content{background:none!important}
+#toc{border-bottom:1px solid #dddddf!important;padding-bottom:0!important}
+body.book #header{text-align:center}
+body.book #header>h1:first-child{border:0!important;margin:2.5em 0 1em}
+body.book #header .details{border:0!important;display:block;padding:0!important}
+body.book #header .details span:first-child{margin-left:0!important}
+body.book #header .details br{display:block}
+body.book #header .details br+span::before{content:none!important}
+body.book #toc{border:0!important;text-align:left!important;padding:0!important;margin:0!important}
+body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-break-before:always}
+.listingblock code[data-lang]::before{display:block}
+#footer{padding:0 .9375em}
+.hide-on-print{display:none!important}
+.print-only{display:block!important}
+.hide-for-print{display:none!important}
+.show-for-print{display:inherit!important}}
+@media amzn-kf8,print{#header>h1:first-child{margin-top:1.25rem}
+.sect1{padding:0!important}
+.sect1+.sect1{border:0}
+#footer{background:none}
+#footer-text{color:rgba(0,0,0,.6);font-size:.9em}}
+@media amzn-kf8{#header,#content,#footnotes,#footer{padding:0}}
+</style>
+<style>
+pre>code {
+ display: inline;
+}
+</style>
+</head>
+<body class="article">
+<div id="header">
+<h1>Upcoming breaking changes</h1>
+</div>
+<div id="content">
+<div id="preamble">
+<div class="sectionbody">
+<div class="paragraph">
+<p>The Git project aims to ensure backwards compatibility to the best extent
+possible. Minor releases will not break backwards compatibility unless there is
+a very strong reason to do so, like for example a security vulnerability.</p>
+</div>
+<div class="paragraph">
+<p>Regardless of that, due to the age of the Git project, it is only natural to
+accumulate a backlog of backwards-incompatible changes that will eventually be
+required to keep the project aligned with a changing world. These changes fall
+into several categories:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Changes to long established defaults.</p>
+</li>
+<li>
+<p>Concepts that have been replaced with a superior design.</p>
+</li>
+<li>
+<p>Concepts, commands, configuration or options that have been lacking in major
+ways and that cannot be fixed and which will thus be removed without any
+replacement.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>Explicitly not included in this list are fixes to minor bugs that may cause a
+change in user-visible behavior.</p>
+</div>
+<div class="paragraph">
+<p>The Git project irregularly releases breaking versions that deliberately break
+backwards compatibility with older versions. This is done to ensure that Git
+remains relevant, safe and maintainable going forward. The release cadence of
+breaking versions is typically measured in multiple years. We had the following
+major breaking releases in the past:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Git 1.6.0, released in August 2008.</p>
+</li>
+<li>
+<p>Git 2.0, released in May 2014.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>We use <major>.<minor> release numbers these days, starting from Git 2.0. For
+future releases, our plan is to increment <major> in the release number when we
+make the next breaking release. Before Git 2.0, the release numbers were
+1.<major>.<minor> with the intention to increment <major> for "usual" breaking
+releases, reserving the jump to Git 2.0 for really large backward-compatibility
+breaking changes.</p>
+</div>
+<div class="paragraph">
+<p>The intent of this document is to track upcoming deprecations for future
+breaking releases. Furthermore, this document also tracks what will <em>not</em> be
+deprecated. This is done such that the outcome of discussions document both
+when the discussion favors deprecation, but also when it rejects a deprecation.</p>
+</div>
+<div class="paragraph">
+<p>Items should have a clear summary of the reasons why we do or do not want to
+make the described change that can be easily understood without having to read
+the mailing list discussions. If there are alternatives to the changed feature,
+those alternatives should be pointed out to our users.</p>
+</div>
+<div class="paragraph">
+<p>All items should be accompanied by references to relevant mailing list threads
+where the deprecation was discussed. These references use message-IDs, which
+can visited via</p>
+</div>
+<div class="literalblock">
+<div class="content">
+<pre>https://lore.kernel.org/git/$message_id/</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>to see the message and its surrounding discussion. Such a reference is there to
+make it easier for you to find how the project reached consensus on the
+described item back then.</p>
+</div>
+<div class="paragraph">
+<p>This is a living document as the environment surrounding the project changes
+over time. If circumstances change, an earlier decision to deprecate or change
+something may need to be revisited from time to time. So do not take items on
+this list to mean "it is settled, do not waste our time bringing it up again".</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_procedure">Procedure</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Discussing the desire to make breaking changes, declaring that breaking
+changes are made at a certain version boundary, and recording these
+decisions in this document, are necessary but not sufficient.
+Because such changes are expected to be numerous, and the design and
+implementation of them are expected to span over time, they have to
+be deployable trivially at such a version boundary, prepared over long
+time.</p>
+</div>
+<div class="paragraph">
+<p>The breaking changes MUST be guarded with the a compile-time switch,
+WITH_BREAKING_CHANGES, to help this process. When built with it,
+the resulting Git binary together with its documentation would
+behave as if these breaking changes slated for the next big version
+boundary are already in effect. We also have a CI job to exercise
+the work-in-progress version of Git with these breaking changes.</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_git_3_0">Git 3.0</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>The following subsections document upcoming breaking changes for Git 3.0. There
+is no planned release date for this breaking version yet.</p>
+</div>
+<div class="paragraph">
+<p>Proposed changes and removals only include items which are "ready" to be done.
+In other words, this is not supposed to be a wishlist of features that should
+be changed to or replaced in case the alternative was implemented already.</p>
+</div>
+<div class="sect2">
+<h3 id="_changes">Changes</h3>
+<div class="ulist">
+<ul>
+<li>
+<p>The default hash function for new repositories will be changed from "sha1"
+to "sha256". SHA-1 has been deprecated by NIST in 2011 and is nowadays
+recommended against in FIPS 140-2 and similar certifications. Furthermore,
+there are practical attacks on SHA-1 that weaken its cryptographic properties:</p>
+<div class="ulist">
+<ul>
+<li>
+<p>The SHAppening (2015). The first demonstration of a practical attack
+against SHA-1 with 2^57 operations.</p>
+</li>
+<li>
+<p>SHAttered (2017). Generation of two valid PDF files with 2^63 operations.</p>
+</li>
+<li>
+<p>Birthday-Near-Collision (2019). This attack allows for chosen prefix
+attacks with 2^68 operations.</p>
+</li>
+<li>
+<p>Shambles (2020). This attack allows for chosen prefix attacks with 2^63
+operations.</p>
+<div class="paragraph">
+<p>While we have protections in place against known attacks, it is expected
+that more attacks against SHA-1 will be found by future research. Paired
+with the ever-growing capability of hardware, it is only a matter of time
+before SHA-1 will be considered broken completely. We want to be prepared
+and will thus change the default hash algorithm to "sha256" for newly
+initialized repositories.</p>
+</div>
+<div class="paragraph">
+<p>An important requirement for this change is that the ecosystem is ready to
+support the "sha256" object format. This includes popular Git libraries,
+applications and forges.</p>
+</div>
+<div class="paragraph">
+<p>There is no plan to deprecate the "sha1" object format at this point in time.</p>
+</div>
+<div class="paragraph">
+<p>Cf. <<a href="mailto:2f5de416-04ba-c23d-1e0b-83bb655829a7@zombino.com">2f5de416-04ba-c23d-1e0b-83bb655829a7@zombino.com</a>>,
+<20170223155046.e7nxivfwqqoprsqj@LykOS.localdomain>,
+<CA+EOSBncr=<a href="mailto:4a4d8n9xS4FNehyebpmX8JiUwCsXD47EQDE+DiUQ@mail.gmail.com">4a4d8n9xS4FNehyebpmX8JiUwCsXD47EQDE+DiUQ@mail.gmail.com</a>>.</p>
+</div>
+</li>
+</ul>
+</div>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_removals">Removals</h3>
+<div class="ulist">
+<ul>
+<li>
+<p>Support for grafting commits has long been superseded by git-replace(1).
+Grafts are inferior to replacement refs:</p>
+<div class="ulist">
+<ul>
+<li>
+<p>Grafts are a local-only mechanism and cannot be shared across
+repositories.</p>
+</li>
+<li>
+<p>Grafts can lead to hard-to-diagnose problems when transferring objects
+between repositories.</p>
+<div class="paragraph">
+<p>The grafting mechanism has been marked as outdated since e650d0643b (docs: mark
+info/grafts as outdated, 2014-03-05) and will be removed.</p>
+</div>
+<div class="paragraph">
+<p>Cf. <<a href="mailto:20140304174806.GA11561@sigill.intra.peff.net">20140304174806.GA11561@sigill.intra.peff.net</a>>.</p>
+</div>
+</li>
+</ul>
+</div>
+</li>
+<li>
+<p>The git-pack-redundant(1) command can be used to remove redundant pack files.
+The subcommand is unusably slow and the reason why nobody reports it as a
+performance bug is suspected to be the absence of users. We have nominated
+the command for removal and have started to emit a user-visible warning in
+c3b58472be (pack-redundant: gauge the usage before proposing its removal,
+2020-08-25) whenever the command is executed.</p>
+<div class="paragraph">
+<p>So far there was a single complaint about somebody still using the command, but
+that complaint did not cause us to reverse course. On the contrary, we have
+doubled down on the deprecation and starting with 4406522b76 (pack-redundant:
+escalate deprecation warning to an error, 2023-03-23), the command dies unless
+the user passes the <code>--i-still-use-this</code> option.</p>
+</div>
+<div class="paragraph">
+<p>There have not been any subsequent complaints, so this command will finally be
+removed.</p>
+</div>
+<div class="paragraph">
+<p>Cf. <<a href="mailto:xmqq1rjuz6n3.fsf_-_@gitster.c.googlers.com">xmqq1rjuz6n3.fsf_-_@gitster.c.googlers.com</a>>,
+ <CAKvOHKAFXQwt4D8yUCCkf_TQL79mYaJ=<a href="mailto:KAKhtpDNTvHJFuX1NA@mail.gmail.com">KAKhtpDNTvHJFuX1NA@mail.gmail.com</a>>,
+ <<a href="mailto:20230323204047.GA9290@coredump.intra.peff.net">20230323204047.GA9290@coredump.intra.peff.net</a>>,</p>
+</div>
+</li>
+<li>
+<p>Support for storing shorthands for remote URLs in "$GIT_COMMON_DIR/branches/"
+and "$GIT_COMMON_DIR/remotes/" has been long superseded by storing remotes in
+the repository configuration.</p>
+<div class="paragraph">
+<p>The mechanism has originally been introduced in f170e4b39d ([PATCH] fetch/pull:
+short-hand notation for remote repositories., 2005-07-16) and was superseded by
+6687f8fea2 ([PATCH] Use .git/remote/origin, not .git/branches/origin.,
+2005-08-20), where we switched from ".git/branches/" to ".git/remotes/". That
+commit already mentions an upcoming deprecation of the ".git/branches/"
+directory, and starting with a1d4aa7424 (Add repository-layout document.,
+2005-09-01) we have also marked this layout as deprecated. Eventually we also
+started to migrate away from ".git/remotes/" in favor of config-based remotes,
+and we have marked the directory as legacy in 3d3d282146 (Documentation:
+Grammar correction, wording fixes and cleanup, 2011-08-23)</p>
+</div>
+<div class="paragraph">
+<p>As our documentation mentions, these directories are unlikely to be used in
+modern repositories and most users aren’t even aware of these mechanisms. They
+have been deprecated for almost 20 years and 14 years respectively, and we are
+not aware of any active users that have complained about this deprecation.
+Furthermore, the ".git/branches/" directory is nowadays misleadingly named and
+may cause confusion as "branches" are almost exclusively used in the context of
+references.</p>
+</div>
+<div class="paragraph">
+<p>These features will be removed.</p>
+</div>
+</li>
+<li>
+<p>Support for "--stdin" option in the "name-rev" command was
+deprecated (and hidden from the documentation) in the Git 2.40
+timeframe, in preference to its synonym "--annotate-stdin". Git 3.0
+removes the support for "--stdin" altogether.</p>
+</li>
+</ul>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_superseded_features_that_will_not_be_deprecated">Superseded features that will not be deprecated</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Some features have gained newer replacements that aim to improve the design in
+certain ways. The fact that there is a replacement does not automatically mean
+that the old way of doing things will eventually be removed. This section tracks
+those features with newer alternatives.</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>The features git-checkout(1) offers are covered by the pair of commands
+git-restore(1) and git-switch(1). Because the use of git-checkout(1) is still
+widespread, and it is not expected that this will change anytime soon, all
+three commands will stay.</p>
+<div class="paragraph">
+<p>This decision may get revisited in case we ever figure out that there are
+almost no users of any of the commands anymore.</p>
+</div>
+<div class="paragraph">
+<p>Cf. <xmqqttjazwwa.fsf@gitster.g>,
+<xmqqleeubork.fsf@gitster.g>,
+<<a href="mailto:112b6568912a6de6672bf5592c3a718e@manjaro.org">112b6568912a6de6672bf5592c3a718e@manjaro.org</a>>.</p>
+</div>
+</li>
+</ul>
+</div>
+</div>
+</div>
+</div>
+<div id="footer">
+<div id="footer-text">
+Last updated 2025-04-07 15:21:58 -0700
+</div>
+</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/RelNotes/2.50.0.adoc b/RelNotes/2.50.0.adoc
index 1905c61..732335c 100644
--- a/RelNotes/2.50.0.adoc
+++ b/RelNotes/2.50.0.adoc
@@ -7,6 +7,9 @@
* A post-processing filter for "diff --raw" output has been
introduced.
+ * "git repack" learned "--combine-cruft-below-size" option that
+ controls how cruft-packs are combined.
+
Performance, Internal Implementation, Development Support etc.
--------------------------------------------------------------
@@ -59,6 +62,32 @@
context size is given, which has been corrected.
(merge d39e28e68c rs/xdiff-context-length-fix later to maint).
+ * GitHub Actions CI switched on a CI/CD variable that does not exist
+ when choosing what packages to install etc., which has been
+ corrected.
+ (merge ee89f7c79d kn/ci-meson-check-build-docs-fix later to maint).
+
+ * Using "git name-rev --stdin" as an example, improve the framework to
+ prepare tests to pretend to be in the future where the breaking
+ changes have already happened.
+ (merge de3dec1187 jc/name-rev-stdin later to maint).
+
+ * An earlier code refactoring of the hash machinery missed a few
+ required calls to init_fn.
+ (merge d39f04b638 jh/hash-init-fixes later to maint).
+
+ * A documentation page was left out from formatting and installation,
+ which has been corrected.
+ (merge ae85116f18 pw/build-breaking-changes-doc later to maint).
+
+ * The bash command line completion script (in contrib/) has been
+ updated to cope with remote repository nicknames with slashes in
+ them.
+ (merge 778d2f1760 dm/completion-remote-names-fix later to maint).
+
+ * "Dubious ownership" checks on Windows has been tightened up.
+ (merge 5bb88e89ef js/mingw-admins-are-special later to maint).
+
* Other code cleanup, docfix, build fix, etc.
(merge 227c4f33a0 ja/doc-block-delimiter-markup-fix later to maint).
(merge 2bfd3b3685 ab/decorate-code-cleanup later to maint).
@@ -66,3 +95,9 @@
(merge 554051d691 en/diff-rename-follow-fix later to maint).
(merge a18c18b470 en/random-cleanups later to maint).
(merge 5af21c9acb hj/doc-rev-list-ancestry-fix later to maint).
+ (merge 26d76ca284 aj/doc-restore-p-update later to maint).
+ (merge 2c0dcb9754 cc/lop-remote later to maint).
+ (merge 7b399322a2 ja/doc-branch-markup later to maint).
+ (merge ee434e1807 pw/doc-pack-refs-markup-fix later to maint).
+ (merge c000918eb7 tb/bitamp-typofix later to maint).
+ (merge fa8cd29676 js/imap-send-peer-cert-verify later to maint).
diff --git a/git-branch.adoc b/git-branch.adoc
index 7a073a3..50a1e13 100644
--- a/git-branch.adoc
+++ b/git-branch.adoc
@@ -7,23 +7,23 @@
SYNOPSIS
--------
-[verse]
-'git branch' [--color[=<when>] | --no-color] [--show-current]
- [-v [--abbrev=<n> | --no-abbrev]]
- [--column[=<options>] | --no-column] [--sort=<key>]
- [--merged [<commit>]] [--no-merged [<commit>]]
- [--contains [<commit>]] [--no-contains [<commit>]]
- [--points-at <object>] [--format=<format>]
- [(-r | --remotes) | (-a | --all)]
- [--list] [<pattern>...]
-'git branch' [--track[=(direct|inherit)] | --no-track] [-f]
- [--recurse-submodules] <branchname> [<start-point>]
-'git branch' (--set-upstream-to=<upstream> | -u <upstream>) [<branchname>]
-'git branch' --unset-upstream [<branchname>]
-'git branch' (-m | -M) [<oldbranch>] <newbranch>
-'git branch' (-c | -C) [<oldbranch>] <newbranch>
-'git branch' (-d | -D) [-r] <branchname>...
-'git branch' --edit-description [<branchname>]
+[synopsis]
+git branch [--color[=<when>] | --no-color] [--show-current]
+ [-v [--abbrev=<n> | --no-abbrev]]
+ [--column[=<options>] | --no-column] [--sort=<key>]
+ [--merged [<commit>]] [--no-merged [<commit>]]
+ [--contains [<commit>]] [--no-contains [<commit>]]
+ [--points-at <object>] [--format=<format>]
+ [(-r|--remotes) | (-a|--all)]
+ [--list] [<pattern>...]
+git branch [--track[=(direct|inherit)] | --no-track] [-f]
+ [--recurse-submodules] <branch-name> [<start-point>]
+git branch (--set-upstream-to=<upstream>|-u <upstream>) [<branch-name>]
+git branch --unset-upstream [<branch-name>]
+git branch (-m|-M) [<old-branch>] <new-branch>
+git branch (-c|-C) [<old-branch>] <new-branch>
+git branch (-d|-D) [-r] <branch-name>...
+git branch --edit-description [<branch-name>]
DESCRIPTION
-----------
@@ -49,173 +49,184 @@
named commit), `--no-contains` inverts it. With `--merged`, only branches
merged into the named commit (i.e. the branches whose tip commits are
reachable from the named commit) will be listed. With `--no-merged` only
-branches not merged into the named commit will be listed. If the <commit>
+branches not merged into the named commit will be listed. If the _<commit>_
argument is missing it defaults to `HEAD` (i.e. the tip of the current
branch).
-The command's second form creates a new branch head named <branchname>
-which points to the current `HEAD`, or <start-point> if given. As a
-special case, for <start-point>, you may use `"A...B"` as a shortcut for
-the merge base of `A` and `B` if there is exactly one merge base. You
-can leave out at most one of `A` and `B`, in which case it defaults to
-`HEAD`.
+The command's second form creates a new branch head named _<branch-name>_
+which points to the current `HEAD`, or _<start-point>_ if given. As a
+special case, for _<start-point>_, you may use `<rev-A>...<rev-B>` as a
+shortcut for the merge base of _<rev-A>_ and _<rev-B>_ if there is exactly
+one merge base. You can leave out at most one of _<rev-A>_ and _<rev-B>_,
+in which case it defaults to `HEAD`.
Note that this will create the new branch, but it will not switch the
-working tree to it; use "git switch <newbranch>" to switch to the
+working tree to it; use `git switch <new-branch>` to switch to the
new branch.
When a local branch is started off a remote-tracking branch, Git sets up the
branch (specifically the `branch.<name>.remote` and `branch.<name>.merge`
-configuration entries) so that 'git pull' will appropriately merge from
+configuration entries) so that `git pull` will appropriately merge from
the remote-tracking branch. This behavior may be changed via the global
`branch.autoSetupMerge` configuration flag. That setting can be
overridden by using the `--track` and `--no-track` options, and
changed later using `git branch --set-upstream-to`.
-With a `-m` or `-M` option, <oldbranch> will be renamed to <newbranch>.
-If <oldbranch> had a corresponding reflog, it is renamed to match
-<newbranch>, and a reflog entry is created to remember the branch
-renaming. If <newbranch> exists, -M must be used to force the rename
+With a `-m` or `-M` option, _<old-branch>_ will be renamed to _<new-branch>_.
+If _<old-branch>_ had a corresponding reflog, it is renamed to match
+_<new-branch>_, and a reflog entry is created to remember the branch
+renaming. If _<new-branch>_ exists, `-M` must be used to force the rename
to happen.
The `-c` and `-C` options have the exact same semantics as `-m` and
`-M`, except instead of the branch being renamed, it will be copied to a
new name, along with its config and reflog.
-With a `-d` or `-D` option, `<branchname>` will be deleted. You may
+With a `-d` or `-D` option, _<branch-name>_ will be deleted. You may
specify more than one branch for deletion. If the branch currently
has a reflog then the reflog will also be deleted.
Use `-r` together with `-d` to delete remote-tracking branches. Note, that it
only makes sense to delete remote-tracking branches if they no longer exist
-in the remote repository or if 'git fetch' was configured not to fetch
-them again. See also the 'prune' subcommand of linkgit:git-remote[1] for a
+in the remote repository or if `git fetch` was configured not to fetch
+them again. See also the `prune` subcommand of linkgit:git-remote[1] for a
way to clean up all obsolete remote-tracking branches.
OPTIONS
-------
--d::
---delete::
+`-d`::
+`--delete`::
Delete a branch. The branch must be fully merged in its
upstream branch, or in `HEAD` if no upstream was set with
`--track` or `--set-upstream-to`.
--D::
+`-D`::
Shortcut for `--delete --force`.
---create-reflog::
+`--create-reflog`::
Create the branch's reflog. This activates recording of
all changes made to the branch ref, enabling use of date
- based sha1 expressions such as "<branchname>@\{yesterday}".
+ based sha1 expressions such as `<branch-name>@{yesterday}`.
Note that in non-bare repositories, reflogs are usually
enabled by default by the `core.logAllRefUpdates` config option.
The negated form `--no-create-reflog` only overrides an earlier
`--create-reflog`, but currently does not negate the setting of
`core.logAllRefUpdates`.
--f::
---force::
- Reset <branchname> to <start-point>, even if <branchname> exists
- already. Without `-f`, 'git branch' refuses to change an existing branch.
+`-f`::
+`--force`::
+ Reset _<branch-name>_ to _<start-point>_, even if _<branch-name>_ exists
+ already. Without `-f`, `git branch` refuses to change an existing branch.
In combination with `-d` (or `--delete`), allow deleting the
branch irrespective of its merged status, or whether it even
points to a valid commit. In combination with
`-m` (or `--move`), allow renaming the branch even if the new
branch name already exists, the same applies for `-c` (or `--copy`).
+
-Note that 'git branch -f <branchname> [<start-point>]', even with '-f',
-refuses to change an existing branch `<branchname>` that is checked out
+Note that `git branch -f <branch-name> [<start-point>]`, even with `-f`,
+refuses to change an existing branch _<branch-name>_ that is checked out
in another worktree linked to the same repository.
--m::
---move::
+`-m`::
+`--move`::
Move/rename a branch, together with its config and reflog.
--M::
+`-M`::
Shortcut for `--move --force`.
--c::
---copy::
+`-c`::
+`--copy`::
Copy a branch, together with its config and reflog.
--C::
+`-C`::
Shortcut for `--copy --force`.
---color[=<when>]::
+`--color[=<when>]`::
Color branches to highlight current, local, and
remote-tracking branches.
- The value must be always (the default), never, or auto.
+ The value must be `always` (the default), `never`, or `auto`.
---no-color::
+`--no-color`::
Turn off branch colors, even when the configuration file gives the
default to color output.
Same as `--color=never`.
--i::
---ignore-case::
+`-i`::
+`--ignore-case`::
Sorting and filtering branches are case insensitive.
---omit-empty::
+`--omit-empty`::
Do not print a newline after formatted refs where the format expands
to the empty string.
---column[=<options>]::
---no-column::
+`--column[=<options>]`::
+`--no-column`::
Display branch listing in columns. See configuration variable
`column.branch` for option syntax. `--column` and `--no-column`
- without options are equivalent to 'always' and 'never' respectively.
+ without options are equivalent to `always` and `never` respectively.
+
This option is only applicable in non-verbose mode.
--r::
---remotes::
- List or delete (if used with -d) the remote-tracking branches.
+`--sort=<key>`::
+ Sort based on _<key>_. Prefix `-` to sort in descending
+ order of the value. You may use the `--sort=<key>` option
+ multiple times, in which case the last key becomes the primary
+ key. The keys supported are the same as those in linkgit:git-for-each-ref[1].
+ Sort order defaults to the value configured for the
+ `branch.sort` variable if it exists, or to sorting based on the
+ full refname (including `refs/...` prefix). This lists
+ detached `HEAD` (if present) first, then local branches and
+ finally remote-tracking branches. See linkgit:git-config[1].
+
+`-r`::
+`--remotes`::
+ List or delete (if used with `-d`) the remote-tracking branches.
Combine with `--list` to match the optional pattern(s).
--a::
---all::
+`-a`::
+`--all`::
List both remote-tracking branches and local branches.
Combine with `--list` to match optional pattern(s).
--l::
---list::
+`-l`::
+`--list`::
List branches. With optional `<pattern>...`, e.g. `git
branch --list 'maint-*'`, list only the branches that match
the pattern(s).
---show-current::
- Print the name of the current branch. In detached HEAD state,
+`--show-current`::
+ Print the name of the current branch. In detached `HEAD` state,
nothing is printed.
--v::
--vv::
---verbose::
+`-v`::
+`-vv`::
+`--verbose`::
When in list mode,
show sha1 and commit subject line for each head, along with
relationship to upstream branch (if any). If given twice, print
the path of the linked worktree (if any) and the name of the upstream
branch, as well (see also `git remote show <remote>`). Note that the
- current worktree's HEAD will not have its path printed (it will always
+ current worktree's `HEAD` will not have its path printed (it will always
be your current directory).
--q::
---quiet::
+`-q`::
+`--quiet`::
Be more quiet when creating or deleting a branch, suppressing
non-error messages.
---abbrev=<n>::
+`--abbrev=<n>`::
In the verbose listing that show the commit object name,
- show the shortest prefix that is at least '<n>' hexdigits
+ show the shortest prefix that is at least _<n>_ hexdigits
long that uniquely refers the object.
The default value is 7 and can be overridden by the `core.abbrev`
config option.
---no-abbrev::
+`--no-abbrev`::
Display the full sha1s in the output listing rather than abbreviating them.
--t::
---track[=(direct|inherit)]::
+`-t`::
+`--track[=(direct|inherit)]`::
When creating a new branch, set up `branch.<name>.remote` and
`branch.<name>.merge` configuration entries to set "upstream" tracking
configuration for the new branch. This
@@ -229,7 +240,7 @@
itself as the upstream; `--track=inherit` means to copy the upstream
configuration of the start-point branch.
+
-The branch.autoSetupMerge configuration variable specifies how `git switch`,
+The `branch.autoSetupMerge` configuration variable specifies how `git switch`,
`git checkout` and `git branch` should behave when neither `--track` nor
`--no-track` are specified:
+
@@ -238,106 +249,94 @@
`false` behaves as if `--no-track` were given. `always` behaves as though
`--track=direct` were given. `inherit` behaves as though `--track=inherit`
were given. `simple` behaves as though `--track=direct` were given only when
-the start-point is a remote-tracking branch and the new branch has the same
+the _<start-point>_ is a remote-tracking branch and the new branch has the same
name as the remote branch.
+
See linkgit:git-pull[1] and linkgit:git-config[1] for additional discussion on
how the `branch.<name>.remote` and `branch.<name>.merge` options are used.
---no-track::
+`--no-track`::
Do not set up "upstream" configuration, even if the
- branch.autoSetupMerge configuration variable is set.
+ `branch.autoSetupMerge` configuration variable is set.
---recurse-submodules::
- THIS OPTION IS EXPERIMENTAL! Causes the current command to
+`--recurse-submodules`::
+ THIS OPTION IS EXPERIMENTAL! Cause the current command to
recurse into submodules if `submodule.propagateBranches` is
enabled. See `submodule.propagateBranches` in
linkgit:git-config[1]. Currently, only branch creation is
supported.
+
-When used in branch creation, a new branch <branchname> will be created
+When used in branch creation, a new branch _<branch-name>_ will be created
in the superproject and all of the submodules in the superproject's
-<start-point>. In submodules, the branch will point to the submodule
-commit in the superproject's <start-point> but the branch's tracking
+_<start-point>_. In submodules, the branch will point to the submodule
+commit in the superproject's _<start-point>_ but the branch's tracking
information will be set up based on the submodule's branches and remotes
e.g. `git branch --recurse-submodules topic origin/main` will create the
submodule branch "topic" that points to the submodule commit in the
superproject's "origin/main", but tracks the submodule's "origin/main".
---set-upstream::
+`--set-upstream`::
As this option had confusing syntax, it is no longer supported.
Please use `--track` or `--set-upstream-to` instead.
--u <upstream>::
---set-upstream-to=<upstream>::
- Set up <branchname>'s tracking information so <upstream> is
- considered <branchname>'s upstream branch. If no <branchname>
+`-u <upstream>`::
+`--set-upstream-to=<upstream>`::
+ Set up _<branch-name>_'s tracking information so _<upstream>_ is
+ considered _<branch-name>_'s upstream branch. If no _<branch-name>_
is specified, then it defaults to the current branch.
---unset-upstream::
- Remove the upstream information for <branchname>. If no branch
+`--unset-upstream`::
+ Remove the upstream information for _<branch-name>_. If no branch
is specified it defaults to the current branch.
---edit-description::
+`--edit-description`::
Open an editor and edit the text to explain what the branch is
for, to be used by various other commands (e.g. `format-patch`,
`request-pull`, and `merge` (if enabled)). Multi-line explanations
may be used.
---contains [<commit>]::
- Only list branches which contain the specified commit (HEAD
+`--contains [<commit>]`::
+ Only list branches which contain _<commit>_ (`HEAD`
if not specified). Implies `--list`.
---no-contains [<commit>]::
- Only list branches which don't contain the specified commit
- (HEAD if not specified). Implies `--list`.
+`--no-contains [<commit>]`::
+ Only list branches which don't contain _<commit>_
+ (`HEAD` if not specified). Implies `--list`.
---merged [<commit>]::
- Only list branches whose tips are reachable from the
- specified commit (HEAD if not specified). Implies `--list`.
+`--merged [<commit>]`::
+ Only list branches whose tips are reachable from
+ _<commit>_ (`HEAD` if not specified). Implies `--list`.
---no-merged [<commit>]::
- Only list branches whose tips are not reachable from the
- specified commit (HEAD if not specified). Implies `--list`.
+`--no-merged [<commit>]`::
+ Only list branches whose tips are not reachable from
+ _<commit>_ (`HEAD` if not specified). Implies `--list`.
-<branchname>::
+`--points-at <object>`::
+ Only list branches of _<object>_.
+
+`--format <format>`::
+ A string that interpolates `%(fieldname)` from a branch ref being shown
+ and the object it points at. _<format>_ is the same as
+ that of linkgit:git-for-each-ref[1].
+
+_<branch-name>_::
The name of the branch to create or delete.
The new branch name must pass all checks defined by
linkgit:git-check-ref-format[1]. Some of these checks
may restrict the characters allowed in a branch name.
-<start-point>::
+_<start-point>_::
The new branch head will point to this commit. It may be
given as a branch name, a commit-id, or a tag. If this
- option is omitted, the current HEAD will be used instead.
+ option is omitted, the current `HEAD` will be used instead.
-<oldbranch>::
+_<old-branch>_::
The name of an existing branch. If this option is omitted,
the name of the current branch will be used instead.
-<newbranch>::
+_<new-branch>_::
The new name for an existing branch. The same restrictions as for
- <branchname> apply.
-
---sort=<key>::
- Sort based on the key given. Prefix `-` to sort in descending
- order of the value. You may use the --sort=<key> option
- multiple times, in which case the last key becomes the primary
- key. The keys supported are the same as those in `git
- for-each-ref`. Sort order defaults to the value configured for the
- `branch.sort` variable if it exists, or to sorting based on the
- full refname (including `refs/...` prefix). This lists
- detached HEAD (if present) first, then local branches and
- finally remote-tracking branches. See linkgit:git-config[1].
-
-
---points-at <object>::
- Only list branches of the given object.
-
---format <format>::
- A string that interpolates `%(fieldname)` from a branch ref being shown
- and the object it points at. The format is the same as
- that of linkgit:git-for-each-ref[1].
+ _<branch-name>_ apply.
CONFIGURATION
-------------
@@ -374,7 +373,7 @@
------------
+
<1> Delete the remote-tracking branches "todo", "html" and "man". The next
- 'fetch' or 'pull' will create them again unless you configure them not to.
+ `git fetch` or `git pullè will create them again unless you configure them not to.
See linkgit:git-fetch[1].
<2> Delete the "test" branch even if the "master" branch (or whichever branch
is currently checked out) does not have all commits from the test branch.
@@ -386,8 +385,8 @@
$ git for-each-ref 'refs/remotes/<remote>/<pattern>' <2>
------------
+
-<1> Using `-a` would conflate <remote> with any local branches you happen to
- have been prefixed with the same <remote> pattern.
+<1> Using `-a` would conflate _<remote>_ with any local branches you happen to
+ have been prefixed with the same _<remote>_ pattern.
<2> `for-each-ref` can take a wide range of options. See linkgit:git-for-each-ref[1]
Patterns will normally need quoting.
@@ -396,24 +395,24 @@
-----
If you are creating a branch that you want to switch to immediately,
-it is easier to use the "git switch" command with its `-c` option to
+it is easier to use the `git switch` command with its `-c` option to
do the same thing with a single command.
The options `--contains`, `--no-contains`, `--merged` and `--no-merged`
serve four related but different purposes:
- `--contains <commit>` is used to find all branches which will need
- special attention if <commit> were to be rebased or amended, since those
- branches contain the specified <commit>.
+ special attention if _<commit>_ were to be rebased or amended, since those
+ branches contain the specified _<commit>_.
- `--no-contains <commit>` is the inverse of that, i.e. branches that don't
- contain the specified <commit>.
+ contain the specified _<commit>_.
- `--merged` is used to find all branches which can be safely deleted,
- since those branches are fully contained by HEAD.
+ since those branches are fully contained by `HEAD`.
- `--no-merged` is used to find branches which are candidates for merging
- into HEAD, since those branches are not fully contained by HEAD.
+ into `HEAD`, since those branches are not fully contained by `HEAD`.
include::ref-reachability-filters.adoc[]
@@ -422,8 +421,8 @@
linkgit:git-check-ref-format[1],
linkgit:git-fetch[1],
linkgit:git-remote[1],
-link:user-manual.html#what-is-a-branch[``Understanding history: What is
-a branch?''] in the Git User's Manual.
+link:user-manual.html#what-is-a-branch["Understanding history: What is
+a branch?"] in the Git User's Manual.
GIT
---
diff --git a/git-branch.html b/git-branch.html
index 55872a0..cca576b 100644
--- a/git-branch.html
+++ b/git-branch.html
@@ -452,22 +452,22 @@
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
-<pre class="content"><em>git branch</em> [--color[=<when>] | --no-color] [--show-current]
- [-v [--abbrev=<n> | --no-abbrev]]
- [--column[=<options>] | --no-column] [--sort=<key>]
- [--merged [<commit>]] [--no-merged [<commit>]]
- [--contains [<commit>]] [--no-contains [<commit>]]
- [--points-at <object>] [--format=<format>]
- [(-r | --remotes) | (-a | --all)]
- [--list] [<pattern>…​]
-<em>git branch</em> [--track[=(direct|inherit)] | --no-track] [-f]
- [--recurse-submodules] <branchname> [<start-point>]
-<em>git branch</em> (--set-upstream-to=<upstream> | -u <upstream>) [<branchname>]
-<em>git branch</em> --unset-upstream [<branchname>]
-<em>git branch</em> (-m | -M) [<oldbranch>] <newbranch>
-<em>git branch</em> (-c | -C) [<oldbranch>] <newbranch>
-<em>git branch</em> (-d | -D) [-r] <branchname>…​
-<em>git branch</em> --edit-description [<branchname>]</pre>
+<pre class="content"><code>git</code> <code>branch</code> [<code>--color</code>[<code>=</code><em><when></em>] | <code>--no-color</code>] [<code>--show-current</code>]
+ [<code>-v</code> [<code>--abbrev=</code><em><n></em> | <code>--no-abbrev</code>]]
+ [<code>--column</code>[<code>=</code><em><options></em>] | <code>--no-column</code>] [<code>--sort=</code><em><key></em>]
+ [<code>--merged</code> [<em><commit></em>]] [<code>--no-merged</code> [<em><commit></em>]]
+ [<code>--contains</code> [<em><commit></em>]] [<code>--no-contains</code> [<em><commit></em>]]
+ [<code>--points-at</code> <em><object></em>] [<code>--format=</code><em><format></em>]
+ [(<code>-r</code>|<code>--remotes</code>) | (<code>-a</code>|<code>--all</code>)]
+ [<code>--list</code>] [<em><pattern></em>…​]
+<code>git</code> <code>branch</code> [<code>--track</code>[<code>=</code>(<code>direct</code>|<code>inherit</code>)] | <code>--no-track</code>] [<code>-f</code>]
+ [<code>--recurse-submodules</code>] <em><branch-name></em> [<em><start-point></em>]
+<code>git</code> <code>branch</code> (<code>--set-upstream-to=</code><em><upstream></em>|<code>-u</code> <em><upstream></em>) [<em><branch-name></em>]
+<code>git</code> <code>branch</code> <code>--unset-upstream</code> [<em><branch-name></em>]
+<code>git</code> <code>branch</code> (<code>-m</code>|<code>-M</code>) [<em><old-branch></em>] <em><new-branch></em>
+<code>git</code> <code>branch</code> (<code>-c</code>|<code>-C</code>) [<em><old-branch></em>] <em><new-branch></em>
+<code>git</code> <code>branch</code> (<code>-d</code>|<code>-D</code>) [<code>-r</code>] <em><branch-name></em>…​
+<code>git</code> <code>branch</code> <code>--edit-description</code> [<em><branch-name></em>]</pre>
</div>
</div>
</div>
@@ -499,37 +499,37 @@
named commit), <code>--no-contains</code> inverts it. With <code>--merged</code>, only branches
merged into the named commit (i.e. the branches whose tip commits are
reachable from the named commit) will be listed. With <code>--no-merged</code> only
-branches not merged into the named commit will be listed. If the <commit>
+branches not merged into the named commit will be listed. If the <em><commit></em>
argument is missing it defaults to <code>HEAD</code> (i.e. the tip of the current
branch).</p>
</div>
<div class="paragraph">
-<p>The command’s second form creates a new branch head named <branchname>
-which points to the current <code>HEAD</code>, or <start-point> if given. As a
-special case, for <start-point>, you may use "A<code>...</code><code>B</code>" as a shortcut for
-the merge base of <code>A</code> and <code>B</code> if there is exactly one merge base. You
-can leave out at most one of <code>A</code> and <code>B</code>, in which case it defaults to
-<code>HEAD</code>.</p>
+<p>The command’s second form creates a new branch head named <em><branch-name></em>
+which points to the current <code>HEAD</code>, or <em><start-point></em> if given. As a
+special case, for <em><start-point></em>, you may use <em><rev-A></em><code>...</code><em><rev-B></em> as a
+shortcut for the merge base of <em><rev-A></em> and <em><rev-B></em> if there is exactly
+one merge base. You can leave out at most one of <em><rev-A></em> and <em><rev-B></em>,
+in which case it defaults to <code>HEAD</code>.</p>
</div>
<div class="paragraph">
<p>Note that this will create the new branch, but it will not switch the
-working tree to it; use "git switch <newbranch>" to switch to the
+working tree to it; use <code>git</code> <code>switch</code> <em><new-branch></em> to switch to the
new branch.</p>
</div>
<div class="paragraph">
<p>When a local branch is started off a remote-tracking branch, Git sets up the
branch (specifically the <code>branch.</code><em><name></em><code>.remote</code> and <code>branch.</code><em><name></em><code>.merge</code>
-configuration entries) so that <em>git pull</em> will appropriately merge from
+configuration entries) so that <code>git</code> <code>pull</code> will appropriately merge from
the remote-tracking branch. This behavior may be changed via the global
<code>branch.autoSetupMerge</code> configuration flag. That setting can be
overridden by using the <code>--track</code> and <code>--no-track</code> options, and
changed later using <code>git</code> <code>branch</code> <code>--set-upstream-to</code>.</p>
</div>
<div class="paragraph">
-<p>With a <code>-m</code> or <code>-M</code> option, <oldbranch> will be renamed to <newbranch>.
-If <oldbranch> had a corresponding reflog, it is renamed to match
-<newbranch>, and a reflog entry is created to remember the branch
-renaming. If <newbranch> exists, -M must be used to force the rename
+<p>With a <code>-m</code> or <code>-M</code> option, <em><old-branch></em> will be renamed to <em><new-branch></em>.
+If <em><old-branch></em> had a corresponding reflog, it is renamed to match
+<em><new-branch></em>, and a reflog entry is created to remember the branch
+renaming. If <em><new-branch></em> exists, <code>-M</code> must be used to force the rename
to happen.</p>
</div>
<div class="paragraph">
@@ -538,15 +538,15 @@
new name, along with its config and reflog.</p>
</div>
<div class="paragraph">
-<p>With a <code>-d</code> or <code>-D</code> option, <em><branchname></em> will be deleted. You may
+<p>With a <code>-d</code> or <code>-D</code> option, <em><branch-name></em> will be deleted. You may
specify more than one branch for deletion. If the branch currently
has a reflog then the reflog will also be deleted.</p>
</div>
<div class="paragraph">
<p>Use <code>-r</code> together with <code>-d</code> to delete remote-tracking branches. Note, that it
only makes sense to delete remote-tracking branches if they no longer exist
-in the remote repository or if <em>git fetch</em> was configured not to fetch
-them again. See also the <em>prune</em> subcommand of <a href="git-remote.html">git-remote(1)</a> for a
+in the remote repository or if <code>git</code> <code>fetch</code> was configured not to fetch
+them again. See also the <code>prune</code> subcommand of <a href="git-remote.html">git-remote(1)</a> for a
way to clean up all obsolete remote-tracking branches.</p>
</div>
</div>
@@ -556,137 +556,149 @@
<div class="sectionbody">
<div class="dlist">
<dl>
-<dt class="hdlist1">-d</dt>
-<dt class="hdlist1">--delete</dt>
+<dt class="hdlist1"><code>-d</code></dt>
+<dt class="hdlist1"><code>--delete</code></dt>
<dd>
<p>Delete a branch. The branch must be fully merged in its
upstream branch, or in <code>HEAD</code> if no upstream was set with
<code>--track</code> or <code>--set-upstream-to</code>.</p>
</dd>
-<dt class="hdlist1">-D</dt>
+<dt class="hdlist1"><code>-D</code></dt>
<dd>
<p>Shortcut for <code>--delete</code> <code>--force</code>.</p>
</dd>
-<dt class="hdlist1">--create-reflog</dt>
+<dt class="hdlist1"><code>--create-reflog</code></dt>
<dd>
<p>Create the branch’s reflog. This activates recording of
all changes made to the branch ref, enabling use of date
-based sha1 expressions such as "<branchname>@{yesterday}".
+based sha1 expressions such as <em><branch-name></em><code>@</code>{yesterday}.
Note that in non-bare repositories, reflogs are usually
enabled by default by the <code>core.logAllRefUpdates</code> config option.
The negated form <code>--no-create-reflog</code> only overrides an earlier
<code>--create-reflog</code>, but currently does not negate the setting of
<code>core.logAllRefUpdates</code>.</p>
</dd>
-<dt class="hdlist1">-f</dt>
-<dt class="hdlist1">--force</dt>
+<dt class="hdlist1"><code>-f</code></dt>
+<dt class="hdlist1"><code>--force</code></dt>
<dd>
-<p>Reset <branchname> to <start-point>, even if <branchname> exists
-already. Without <code>-f</code>, <em>git branch</em> refuses to change an existing branch.
+<p>Reset <em><branch-name></em> to <em><start-point></em>, even if <em><branch-name></em> exists
+already. Without <code>-f</code>, <code>git</code> <code>branch</code> refuses to change an existing branch.
In combination with <code>-d</code> (or <code>--delete</code>), allow deleting the
branch irrespective of its merged status, or whether it even
points to a valid commit. In combination with
<code>-m</code> (or <code>--move</code>), allow renaming the branch even if the new
branch name already exists, the same applies for <code>-c</code> (or <code>--copy</code>).</p>
<div class="paragraph">
-<p>Note that <em>git branch -f <branchname> [<start-point>]</em>, even with <em>-f</em>,
-refuses to change an existing branch <em><branchname></em> that is checked out
+<p>Note that <code>git</code> <code>branch</code> <code>-f</code> <em><branch-name></em> [<em><start-point></em>], even with <code>-f</code>,
+refuses to change an existing branch <em><branch-name></em> that is checked out
in another worktree linked to the same repository.</p>
</div>
</dd>
-<dt class="hdlist1">-m</dt>
-<dt class="hdlist1">--move</dt>
+<dt class="hdlist1"><code>-m</code></dt>
+<dt class="hdlist1"><code>--move</code></dt>
<dd>
<p>Move/rename a branch, together with its config and reflog.</p>
</dd>
-<dt class="hdlist1">-M</dt>
+<dt class="hdlist1"><code>-M</code></dt>
<dd>
<p>Shortcut for <code>--move</code> <code>--force</code>.</p>
</dd>
-<dt class="hdlist1">-c</dt>
-<dt class="hdlist1">--copy</dt>
+<dt class="hdlist1"><code>-c</code></dt>
+<dt class="hdlist1"><code>--copy</code></dt>
<dd>
<p>Copy a branch, together with its config and reflog.</p>
</dd>
-<dt class="hdlist1">-C</dt>
+<dt class="hdlist1"><code>-C</code></dt>
<dd>
<p>Shortcut for <code>--copy</code> <code>--force</code>.</p>
</dd>
-<dt class="hdlist1">--color[=<when>]</dt>
+<dt class="hdlist1"><code>--color</code>[<code>=</code><em><when></em>]</dt>
<dd>
<p>Color branches to highlight current, local, and
remote-tracking branches.
-The value must be always (the default), never, or auto.</p>
+The value must be <code>always</code> (the default), <code>never</code>, or <code>auto</code>.</p>
</dd>
-<dt class="hdlist1">--no-color</dt>
+<dt class="hdlist1"><code>--no-color</code></dt>
<dd>
<p>Turn off branch colors, even when the configuration file gives the
default to color output.
Same as <code>--color=never</code>.</p>
</dd>
-<dt class="hdlist1">-i</dt>
-<dt class="hdlist1">--ignore-case</dt>
+<dt class="hdlist1"><code>-i</code></dt>
+<dt class="hdlist1"><code>--ignore-case</code></dt>
<dd>
<p>Sorting and filtering branches are case insensitive.</p>
</dd>
-<dt class="hdlist1">--omit-empty</dt>
+<dt class="hdlist1"><code>--omit-empty</code></dt>
<dd>
<p>Do not print a newline after formatted refs where the format expands
to the empty string.</p>
</dd>
-<dt class="hdlist1">--column[=<options>]</dt>
-<dt class="hdlist1">--no-column</dt>
+<dt class="hdlist1"><code>--column</code>[<code>=</code><em><options></em>]</dt>
+<dt class="hdlist1"><code>--no-column</code></dt>
<dd>
<p>Display branch listing in columns. See configuration variable
<code>column.branch</code> for option syntax. <code>--column</code> and <code>--no-column</code>
-without options are equivalent to <em>always</em> and <em>never</em> respectively.</p>
+without options are equivalent to <code>always</code> and <code>never</code> respectively.</p>
<div class="paragraph">
<p>This option is only applicable in non-verbose mode.</p>
</div>
</dd>
-<dt class="hdlist1">-r</dt>
-<dt class="hdlist1">--remotes</dt>
+<dt class="hdlist1"><code>--sort=</code><em><key></em></dt>
<dd>
-<p>List or delete (if used with -d) the remote-tracking branches.
+<p>Sort based on <em><key></em>. Prefix <code>-</code> to sort in descending
+order of the value. You may use the <code>--sort=</code><em><key></em> option
+multiple times, in which case the last key becomes the primary
+key. The keys supported are the same as those in <a href="git-for-each-ref.html">git-for-each-ref(1)</a>.
+Sort order defaults to the value configured for the
+<code>branch.sort</code> variable if it exists, or to sorting based on the
+full refname (including <code>refs/..</code>. prefix). This lists
+detached <code>HEAD</code> (if present) first, then local branches and
+finally remote-tracking branches. See <a href="git-config.html">git-config(1)</a>.</p>
+</dd>
+<dt class="hdlist1"><code>-r</code></dt>
+<dt class="hdlist1"><code>--remotes</code></dt>
+<dd>
+<p>List or delete (if used with <code>-d</code>) the remote-tracking branches.
Combine with <code>--list</code> to match the optional pattern(s).</p>
</dd>
-<dt class="hdlist1">-a</dt>
-<dt class="hdlist1">--all</dt>
+<dt class="hdlist1"><code>-a</code></dt>
+<dt class="hdlist1"><code>--all</code></dt>
<dd>
<p>List both remote-tracking branches and local branches.
Combine with <code>--list</code> to match optional pattern(s).</p>
</dd>
-<dt class="hdlist1">-l</dt>
-<dt class="hdlist1">--list</dt>
+<dt class="hdlist1"><code>-l</code></dt>
+<dt class="hdlist1"><code>--list</code></dt>
<dd>
<p>List branches. With optional <em><pattern></em>..., e.g. <code>git</code>
<code>branch</code> <code>--list</code> 'maint-*', list only the branches that match
the pattern(s).</p>
</dd>
-<dt class="hdlist1">--show-current</dt>
+<dt class="hdlist1"><code>--show-current</code></dt>
<dd>
-<p>Print the name of the current branch. In detached HEAD state,
+<p>Print the name of the current branch. In detached <code>HEAD</code> state,
nothing is printed.</p>
</dd>
-<dt class="hdlist1">-v</dt>
-<dt class="hdlist1">-vv</dt>
-<dt class="hdlist1">--verbose</dt>
+<dt class="hdlist1"><code>-v</code></dt>
+<dt class="hdlist1"><code>-vv</code></dt>
+<dt class="hdlist1"><code>--verbose</code></dt>
<dd>
<p>When in list mode,
show sha1 and commit subject line for each head, along with
relationship to upstream branch (if any). If given twice, print
the path of the linked worktree (if any) and the name of the upstream
branch, as well (see also <code>git</code> <code>remote</code> <code>show</code> <em><remote></em>). Note that the
-current worktree’s HEAD will not have its path printed (it will always
+current worktree’s <code>HEAD</code> will not have its path printed (it will always
be your current directory).</p>
</dd>
-<dt class="hdlist1">-q</dt>
-<dt class="hdlist1">--quiet</dt>
+<dt class="hdlist1"><code>-q</code></dt>
+<dt class="hdlist1"><code>--quiet</code></dt>
<dd>
<p>Be more quiet when creating or deleting a branch, suppressing
non-error messages.</p>
</dd>
-<dt class="hdlist1">--abbrev=<n></dt>
+<dt class="hdlist1"><code>--abbrev=</code><em><n></em></dt>
<dd>
<p>In the verbose listing that show the commit object name,
show the shortest prefix that is at least <em><n></em> hexdigits
@@ -694,12 +706,12 @@
The default value is 7 and can be overridden by the <code>core.abbrev</code>
config option.</p>
</dd>
-<dt class="hdlist1">--no-abbrev</dt>
+<dt class="hdlist1"><code>--no-abbrev</code></dt>
<dd>
<p>Display the full sha1s in the output listing rather than abbreviating them.</p>
</dd>
-<dt class="hdlist1">-t</dt>
-<dt class="hdlist1">--track[=(direct|inherit)]</dt>
+<dt class="hdlist1"><code>-t</code></dt>
+<dt class="hdlist1"><code>--track</code>[<code>=</code>(<code>direct</code>|<code>inherit</code>)]</dt>
<dd>
<p>When creating a new branch, set up <code>branch.</code><em><name></em><code>.remote</code> and
<code>branch.</code><em><name></em><code>.merge</code> configuration entries to set "upstream" tracking
@@ -715,7 +727,7 @@
configuration of the start-point branch.</p>
</div>
<div class="paragraph">
-<p>The branch.autoSetupMerge configuration variable specifies how <code>git</code> <code>switch</code>,
+<p>The <code>branch.autoSetupMerge</code> configuration variable specifies how <code>git</code> <code>switch</code>,
<code>git</code> <code>checkout</code> and <code>git</code> <code>branch</code> should behave when neither <code>--track</code> nor
<code>--no-track</code> are specified:</p>
</div>
@@ -725,7 +737,7 @@
<code>false</code> behaves as if <code>--no-track</code> were given. <code>always</code> behaves as though
<code>--track=direct</code> were given. <code>inherit</code> behaves as though <code>--track=inherit</code>
were given. <code>simple</code> behaves as though <code>--track=direct</code> were given only when
-the start-point is a remote-tracking branch and the new branch has the same
+the <em><start-point></em> is a remote-tracking branch and the new branch has the same
name as the remote branch.</p>
</div>
<div class="paragraph">
@@ -733,117 +745,105 @@
how the <code>branch.</code><em><name></em><code>.remote</code> and <code>branch.</code><em><name></em><code>.merge</code> options are used.</p>
</div>
</dd>
-<dt class="hdlist1">--no-track</dt>
+<dt class="hdlist1"><code>--no-track</code></dt>
<dd>
<p>Do not set up "upstream" configuration, even if the
-branch.autoSetupMerge configuration variable is set.</p>
+<code>branch.autoSetupMerge</code> configuration variable is set.</p>
</dd>
-<dt class="hdlist1">--recurse-submodules</dt>
+<dt class="hdlist1"><code>--recurse-submodules</code></dt>
<dd>
-<p>THIS OPTION IS EXPERIMENTAL! Causes the current command to
+<p>THIS OPTION IS EXPERIMENTAL! Cause the current command to
recurse into submodules if <code>submodule.propagateBranches</code> is
enabled. See <code>submodule.propagateBranches</code> in
<a href="git-config.html">git-config(1)</a>. Currently, only branch creation is
supported.</p>
<div class="paragraph">
-<p>When used in branch creation, a new branch <branchname> will be created
+<p>When used in branch creation, a new branch <em><branch-name></em> will be created
in the superproject and all of the submodules in the superproject’s
-<start-point>. In submodules, the branch will point to the submodule
-commit in the superproject’s <start-point> but the branch’s tracking
+<em><start-point></em>. In submodules, the branch will point to the submodule
+commit in the superproject’s <em><start-point></em> but the branch’s tracking
information will be set up based on the submodule’s branches and remotes
e.g. <code>git</code> <code>branch</code> <code>--recurse-submodules</code> <code>topic</code> <code>origin/main</code> will create the
submodule branch "topic" that points to the submodule commit in the
superproject’s "origin/main", but tracks the submodule’s "origin/main".</p>
</div>
</dd>
-<dt class="hdlist1">--set-upstream</dt>
+<dt class="hdlist1"><code>--set-upstream</code></dt>
<dd>
<p>As this option had confusing syntax, it is no longer supported.
Please use <code>--track</code> or <code>--set-upstream-to</code> instead.</p>
</dd>
-<dt class="hdlist1">-u <upstream></dt>
-<dt class="hdlist1">--set-upstream-to=<upstream></dt>
+<dt class="hdlist1"><code>-u</code> <em><upstream></em></dt>
+<dt class="hdlist1"><code>--set-upstream-to=</code><em><upstream></em></dt>
<dd>
-<p>Set up <branchname>'s tracking information so <upstream> is
-considered <branchname>'s upstream branch. If no <branchname>
+<p>Set up <em><branch-name></em>'s tracking information so <em><upstream></em> is
+considered <em><branch-name></em>'s upstream branch. If no <em><branch-name></em>
is specified, then it defaults to the current branch.</p>
</dd>
-<dt class="hdlist1">--unset-upstream</dt>
+<dt class="hdlist1"><code>--unset-upstream</code></dt>
<dd>
-<p>Remove the upstream information for <branchname>. If no branch
+<p>Remove the upstream information for <em><branch-name></em>. If no branch
is specified it defaults to the current branch.</p>
</dd>
-<dt class="hdlist1">--edit-description</dt>
+<dt class="hdlist1"><code>--edit-description</code></dt>
<dd>
<p>Open an editor and edit the text to explain what the branch is
for, to be used by various other commands (e.g. <code>format-patch</code>,
<code>request-pull</code>, and <code>merge</code> (if enabled)). Multi-line explanations
may be used.</p>
</dd>
-<dt class="hdlist1">--contains [<commit>]</dt>
+<dt class="hdlist1"><code>--contains</code> [<em><commit></em>]</dt>
<dd>
-<p>Only list branches which contain the specified commit (HEAD
+<p>Only list branches which contain <em><commit></em> (<code>HEAD</code>
if not specified). Implies <code>--list</code>.</p>
</dd>
-<dt class="hdlist1">--no-contains [<commit>]</dt>
+<dt class="hdlist1"><code>--no-contains</code> [<em><commit></em>]</dt>
<dd>
-<p>Only list branches which don’t contain the specified commit
-(HEAD if not specified). Implies <code>--list</code>.</p>
+<p>Only list branches which don’t contain <em><commit></em>
+(<code>HEAD</code> if not specified). Implies <code>--list</code>.</p>
</dd>
-<dt class="hdlist1">--merged [<commit>]</dt>
+<dt class="hdlist1"><code>--merged</code> [<em><commit></em>]</dt>
<dd>
-<p>Only list branches whose tips are reachable from the
-specified commit (HEAD if not specified). Implies <code>--list</code>.</p>
+<p>Only list branches whose tips are reachable from
+<em><commit></em> (<code>HEAD</code> if not specified). Implies <code>--list</code>.</p>
</dd>
-<dt class="hdlist1">--no-merged [<commit>]</dt>
+<dt class="hdlist1"><code>--no-merged</code> [<em><commit></em>]</dt>
<dd>
-<p>Only list branches whose tips are not reachable from the
-specified commit (HEAD if not specified). Implies <code>--list</code>.</p>
+<p>Only list branches whose tips are not reachable from
+<em><commit></em> (<code>HEAD</code> if not specified). Implies <code>--list</code>.</p>
</dd>
-<dt class="hdlist1"><branchname></dt>
+<dt class="hdlist1"><code>--points-at</code> <em><object></em></dt>
+<dd>
+<p>Only list branches of <em><object></em>.</p>
+</dd>
+<dt class="hdlist1"><code>--format</code> <em><format></em></dt>
+<dd>
+<p>A string that interpolates %(<code>fieldname</code>) from a branch ref being shown
+and the object it points at. <em><format></em> is the same as
+that of <a href="git-for-each-ref.html">git-for-each-ref(1)</a>.</p>
+</dd>
+<dt class="hdlist1"><em><branch-name></em></dt>
<dd>
<p>The name of the branch to create or delete.
The new branch name must pass all checks defined by
<a href="git-check-ref-format.html">git-check-ref-format(1)</a>. Some of these checks
may restrict the characters allowed in a branch name.</p>
</dd>
-<dt class="hdlist1"><start-point></dt>
+<dt class="hdlist1"><em><start-point></em></dt>
<dd>
<p>The new branch head will point to this commit. It may be
given as a branch name, a commit-id, or a tag. If this
-option is omitted, the current HEAD will be used instead.</p>
+option is omitted, the current <code>HEAD</code> will be used instead.</p>
</dd>
-<dt class="hdlist1"><oldbranch></dt>
+<dt class="hdlist1"><em><old-branch></em></dt>
<dd>
<p>The name of an existing branch. If this option is omitted,
the name of the current branch will be used instead.</p>
</dd>
-<dt class="hdlist1"><newbranch></dt>
+<dt class="hdlist1"><em><new-branch></em></dt>
<dd>
<p>The new name for an existing branch. The same restrictions as for
-<branchname> apply.</p>
-</dd>
-<dt class="hdlist1">--sort=<key></dt>
-<dd>
-<p>Sort based on the key given. Prefix <code>-</code> to sort in descending
-order of the value. You may use the --sort=<key> option
-multiple times, in which case the last key becomes the primary
-key. The keys supported are the same as those in <code>git</code>
-<code>for-each-ref</code>. Sort order defaults to the value configured for the
-<code>branch.sort</code> variable if it exists, or to sorting based on the
-full refname (including <code>refs/..</code>. prefix). This lists
-detached HEAD (if present) first, then local branches and
-finally remote-tracking branches. See <a href="git-config.html">git-config(1)</a>.</p>
-</dd>
-<dt class="hdlist1">--points-at <object></dt>
-<dd>
-<p>Only list branches of the given object.</p>
-</dd>
-<dt class="hdlist1">--format <format></dt>
-<dd>
-<p>A string that interpolates %(<code>fieldname</code>) from a branch ref being shown
-and the object it points at. The format is the same as
-that of <a href="git-for-each-ref.html">git-for-each-ref(1)</a>.</p>
+<em><branch-name></em> apply.</p>
</dd>
</dl>
</div>
@@ -864,47 +864,84 @@
</div>
<div class="dlist">
<dl>
-<dt class="hdlist1">branch.autoSetupMerge</dt>
+<dt class="hdlist1"><code>branch.autoSetupMerge</code></dt>
<dd>
-<p>Tells <em>git branch</em>, <em>git switch</em> and <em>git checkout</em> to set up new branches
+<p>Tells <code>git</code> <code>branch</code>, <code>git</code> <code>switch</code> and <code>git</code> <code>checkout</code> to set up new branches
so that <a href="git-pull.html">git-pull(1)</a> will appropriately merge from the
starting point branch. Note that even if this option is not set,
this behavior can be chosen per-branch using the <code>--track</code>
-and <code>--no-track</code> options. The valid settings are: <code>false</code> — no
-automatic setup is done; <code>true</code> — automatic setup is done when the
-starting point is a remote-tracking branch; <code>always</code> — automatic setup is done when the starting point is either a
-local branch or remote-tracking branch; <code>inherit</code> — if the starting point
-has a tracking configuration, it is copied to the new
-branch; <code>simple</code> — automatic setup is done only when the starting point
-is a remote-tracking branch and the new branch has the same name as the
-remote branch. This option defaults to true.</p>
-</dd>
-<dt class="hdlist1">branch.autoSetupRebase</dt>
+and <code>--no-track</code> options. This option defaults to <code>true</code>. The valid settings
+are:</p>
+<div class="dlist">
+<dl>
+<dt class="hdlist1"><code>false</code></dt>
<dd>
-<p>When a new branch is created with <em>git branch</em>, <em>git switch</em> or <em>git checkout</em>
-that tracks another branch, this variable tells Git to set
-up pull to rebase instead of merge (see "branch.<name>.rebase").
-When <code>never</code>, rebase is never automatically set to true.
-When <code>local</code>, rebase is set to true for tracked branches of
-other local branches.
-When <code>remote</code>, rebase is set to true for tracked branches of
-remote-tracking branches.
-When <code>always</code>, rebase will be set to true for all tracking
-branches.
-See "branch.autoSetupMerge" for details on how to set up a
-branch to track another branch.
-This option defaults to never.</p>
+<p>no automatic setup is done</p>
</dd>
-<dt class="hdlist1">branch.sort</dt>
+<dt class="hdlist1"><code>true</code></dt>
+<dd>
+<p>automatic setup is done when the starting point is a remote-tracking branch</p>
+</dd>
+<dt class="hdlist1"><code>always</code></dt>
+<dd>
+<p>automatic setup is done when the starting point is either a
+local branch or remote-tracking branch</p>
+</dd>
+<dt class="hdlist1"><code>inherit</code></dt>
+<dd>
+<p>if the starting point has a tracking configuration, it is copied to the new
+branch</p>
+</dd>
+<dt class="hdlist1"><code>simple</code></dt>
+<dd>
+<p>automatic setup is done only when the starting point
+is a remote-tracking branch and the new branch has the same name as the
+remote branch.</p>
+</dd>
+</dl>
+</div>
+</dd>
+<dt class="hdlist1"><code>branch.autoSetupRebase</code></dt>
+<dd>
+<p>When a new branch is created with <code>git</code> <code>branch</code>, <code>git</code> <code>switch</code> or <code>git</code> <code>checkout</code>
+that tracks another branch, this variable tells Git to set
+up pull to rebase instead of merge (see <code>branch.</code><em><name></em><code>.rebase</code>).
+The valid settings are:</p>
+<div class="dlist">
+<dl>
+<dt class="hdlist1"><code>never</code></dt>
+<dd>
+<p>rebase is never automatically set to true.</p>
+</dd>
+<dt class="hdlist1"><code>local</code></dt>
+<dd>
+<p>rebase is set to true for tracked branches of other local branches.</p>
+</dd>
+<dt class="hdlist1"><code>remote</code></dt>
+<dd>
+<p>rebase is set to true for tracked branches of remote-tracking branches.</p>
+</dd>
+<dt class="hdlist1"><code>always</code></dt>
+<dd>
+<p>rebase will be set to true for all tracking branches.</p>
+</dd>
+</dl>
+</div>
+<div class="paragraph">
+<p>See <code>branch.autoSetupMerge</code> for details on how to set up a branch to track another branch.
+This option defaults to <code>never</code>.</p>
+</div>
+</dd>
+<dt class="hdlist1"><code>branch.sort</code></dt>
<dd>
<p>This variable controls the sort ordering of branches when displayed by
-<a href="git-branch.html">git-branch(1)</a>. Without the "--sort=<value>" option provided, the
+<a href="git-branch.html">git-branch(1)</a>. Without the <code>--sort=</code><em><value></em> option provided, the
value of this variable will be used as the default.
See <a href="git-for-each-ref.html">git-for-each-ref(1)</a> field names for valid values.</p>
</dd>
-<dt class="hdlist1">branch.<name>.remote</dt>
+<dt class="hdlist1"><code>branch.</code><em><name></em><code>.remote</code></dt>
<dd>
-<p>When on branch <name>, it tells <em>git fetch</em> and <em>git push</em>
+<p>When on branch <em><name></em>, it tells <code>git</code> <code>fetch</code> and <code>git</code> <code>push</code>
which remote to fetch from or push to. The remote to push to
may be overridden with <code>remote.pushDefault</code> (for all branches).
The remote to push to, for the current branch, may be further
@@ -915,55 +952,55 @@
Additionally, . (a period) is the current local repository
(a dot-repository), see <code>branch.</code><em><name></em><code>.merge</code>'s final note below.</p>
</dd>
-<dt class="hdlist1">branch.<name>.pushRemote</dt>
+<dt class="hdlist1"><code>branch.</code><em><name></em><code>.pushRemote</code></dt>
<dd>
-<p>When on branch <name>, it overrides <code>branch.</code><em><name></em><code>.remote</code> for
+<p>When on branch <em><name></em>, it overrides <code>branch.</code><em><name></em><code>.remote</code> for
pushing. It also overrides <code>remote.pushDefault</code> for pushing
-from branch <name>. When you pull from one place (e.g. your
+from branch <em><name></em>. When you pull from one place (e.g. your
upstream) and push to another place (e.g. your own publishing
repository), you would want to set <code>remote.pushDefault</code> to
specify the remote to push to for all branches, and use this
option to override it for a specific branch.</p>
</dd>
-<dt class="hdlist1">branch.<name>.merge</dt>
+<dt class="hdlist1"><code>branch.</code><em><name></em><code>.merge</code></dt>
<dd>
-<p>Defines, together with branch.<name>.remote, the upstream branch
-for the given branch. It tells <em>git fetch</em>/<em>git pull</em>/<em>git rebase</em> which
-branch to merge and can also affect <em>git push</em> (see push.default).
-When in branch <name>, it tells <em>git fetch</em> the default
-refspec to be marked for merging in FETCH_HEAD. The value is
+<p>Defines, together with <code>branch.</code><em><name></em><code>.remote</code>, the upstream branch
+for the given branch. It tells <code>git</code> <code>fetch</code>/<code>git</code> <code>pull</code>/<code>git</code> <code>rebase</code> which
+branch to merge and can also affect <code>git</code> <code>push</code> (see <code>push.default</code>).
+When in branch <em><name></em>, it tells <code>git</code> <code>fetch</code> the default
+refspec to be marked for merging in <code>FETCH_HEAD</code>. The value is
handled like the remote part of a refspec, and must match a
ref which is fetched from the remote given by
-"branch.<name>.remote".
-The merge information is used by <em>git pull</em> (which first calls
-<em>git fetch</em>) to lookup the default branch for merging. Without
-this option, <em>git pull</em> defaults to merge the first refspec fetched.
+<code>branch.</code><em><name></em><code>.remote</code>.
+The merge information is used by <code>git</code> <code>pull</code> (which first calls
+<code>git</code> <code>fetch</code>) to lookup the default branch for merging. Without
+this option, <code>git</code> <code>pull</code> defaults to merge the first refspec fetched.
Specify multiple values to get an octopus merge.
-If you wish to setup <em>git pull</em> so that it merges into <name> from
+If you wish to setup <code>git</code> <code>pull</code> so that it merges into <name> from
another branch in the local repository, you can point
branch.<name>.merge to the desired branch, and use the relative path
-setting . (a period) for branch.<name>.remote.</p>
+setting . (a period) for <code>branch.</code><em><name></em><code>.remote</code>.</p>
</dd>
-<dt class="hdlist1">branch.<name>.mergeOptions</dt>
+<dt class="hdlist1"><code>branch.</code><em><name></em><code>.mergeOptions</code></dt>
<dd>
-<p>Sets default options for merging into branch <name>. The syntax and
+<p>Sets default options for merging into branch <em><name></em>. The syntax and
supported options are the same as those of <a href="git-merge.html">git-merge(1)</a>, but
option values containing whitespace characters are currently not
supported.</p>
</dd>
-<dt class="hdlist1">branch.<name>.rebase</dt>
+<dt class="hdlist1"><code>branch.</code><em><name></em><code>.rebase</code></dt>
<dd>
-<p>When true, rebase the branch <name> on top of the fetched branch,
+<p>When true, rebase the branch <em><name></em> on top of the fetched branch,
instead of merging the default branch from the default remote when
-"git pull" is run. See "pull.rebase" for doing this in a non
+<code>git</code> <code>pull</code> is run. See <code>pull.rebase</code> for doing this in a non
branch-specific manner.</p>
<div class="paragraph">
-<p>When <code>merges</code> (or just <em>m</em>), pass the <code>--rebase-merges</code> option to <em>git rebase</em>
+<p>When <code>merges</code> (or just <code>m</code>), pass the <code>--rebase-merges</code> option to <code>git</code> <code>rebase</code>
so that the local merge commits are included in the rebase (see
<a href="git-rebase.html">git-rebase(1)</a> for details).</p>
</div>
<div class="paragraph">
-<p>When the value is <code>interactive</code> (or just <em>i</em>), the rebase is run in interactive
+<p>When the value is <code>interactive</code> (or just <code>i</code>), the rebase is run in interactive
mode.</p>
</div>
<div class="paragraph">
@@ -972,12 +1009,12 @@
for details).</p>
</div>
</dd>
-<dt class="hdlist1">branch.<name>.description</dt>
+<dt class="hdlist1"><code>branch.</code><em><name></em><code>.description</code></dt>
<dd>
<p>Branch description, can be edited with
<code>git</code> <code>branch</code> <code>--edit-description</code>. Branch description is
-automatically added to the format-patch cover letter or
-request-pull summary.</p>
+automatically added to the <code>format-patch</code> cover letter or
+<code>request-pull</code> summary.</p>
</dd>
</dl>
</div>
@@ -1021,7 +1058,7 @@
<ol>
<li>
<p>Delete the remote-tracking branches "todo", "html" and "man". The next
-<em>fetch</em> or <em>pull</em> will create them again unless you configure them not to.
+<code>git</code> <code>fetch</code> or `git pullè will create them again unless you configure them not to.
See <a href="git-fetch.html">git-fetch(1)</a>.</p>
</li>
<li>
@@ -1042,8 +1079,8 @@
<div class="colist arabic">
<ol>
<li>
-<p>Using <code>-a</code> would conflate <remote> with any local branches you happen to
-have been prefixed with the same <remote> pattern.</p>
+<p>Using <code>-a</code> would conflate <em><remote></em> with any local branches you happen to
+have been prefixed with the same <em><remote></em> pattern.</p>
</li>
<li>
<p><code>for-each-ref</code> can take a wide range of options. See <a href="git-for-each-ref.html">git-for-each-ref(1)</a></p>
@@ -1063,7 +1100,7 @@
<div class="sectionbody">
<div class="paragraph">
<p>If you are creating a branch that you want to switch to immediately,
-it is easier to use the "git switch" command with its <code>-c</code> option to
+it is easier to use the <code>git</code> <code>switch</code> command with its <code>-c</code> option to
do the same thing with a single command.</p>
</div>
<div class="paragraph">
@@ -1074,20 +1111,20 @@
<ul>
<li>
<p><code>--contains</code> <em><commit></em> is used to find all branches which will need
-special attention if <commit> were to be rebased or amended, since those
-branches contain the specified <commit>.</p>
+special attention if <em><commit></em> were to be rebased or amended, since those
+branches contain the specified <em><commit></em>.</p>
</li>
<li>
<p><code>--no-contains</code> <em><commit></em> is the inverse of that, i.e. branches that don’t
-contain the specified <commit>.</p>
+contain the specified <em><commit></em>.</p>
</li>
<li>
<p><code>--merged</code> is used to find all branches which can be safely deleted,
-since those branches are fully contained by HEAD.</p>
+since those branches are fully contained by <code>HEAD</code>.</p>
</li>
<li>
<p><code>--no-merged</code> is used to find branches which are candidates for merging
-into HEAD, since those branches are not fully contained by HEAD.</p>
+into <code>HEAD</code>, since those branches are not fully contained by <code>HEAD</code>.</p>
</li>
</ul>
</div>
@@ -1110,8 +1147,8 @@
<p><a href="git-check-ref-format.html">git-check-ref-format(1)</a>,
<a href="git-fetch.html">git-fetch(1)</a>,
<a href="git-remote.html">git-remote(1)</a>,
-<a href="user-manual.html#what-is-a-branch">“Understanding history: What is
-a branch?”</a> in the Git User’s Manual.</p>
+<a href="user-manual.html#what-is-a-branch">"Understanding history: What is
+a branch?"</a> in the Git User’s Manual.</p>
</div>
</div>
</div>
@@ -1126,7 +1163,7 @@
</div>
<div id="footer">
<div id="footer-text">
-Last updated 2025-02-14 21:38:14 -0800
+Last updated 2025-04-07 15:21:58 -0700
</div>
</div>
</body>
diff --git a/git-config.html b/git-config.html
index 476708e..8b72781 100644
--- a/git-config.html
+++ b/git-config.html
@@ -2243,47 +2243,84 @@
<p>Mark lines that were changed by an ignored revision that we attributed to
another commit with a <em>?</em> in the output of <a href="git-blame.html">git-blame(1)</a>.</p>
</dd>
-<dt class="hdlist1">branch.autoSetupMerge</dt>
+<dt class="hdlist1"><code>branch.autoSetupMerge</code></dt>
<dd>
-<p>Tells <em>git branch</em>, <em>git switch</em> and <em>git checkout</em> to set up new branches
+<p>Tells <code>git</code> <code>branch</code>, <code>git</code> <code>switch</code> and <code>git</code> <code>checkout</code> to set up new branches
so that <a href="git-pull.html">git-pull(1)</a> will appropriately merge from the
starting point branch. Note that even if this option is not set,
this behavior can be chosen per-branch using the <code>--track</code>
-and <code>--no-track</code> options. The valid settings are: <code>false</code> — no
-automatic setup is done; <code>true</code> — automatic setup is done when the
-starting point is a remote-tracking branch; <code>always</code> — automatic setup is done when the starting point is either a
-local branch or remote-tracking branch; <code>inherit</code> — if the starting point
-has a tracking configuration, it is copied to the new
-branch; <code>simple</code> — automatic setup is done only when the starting point
-is a remote-tracking branch and the new branch has the same name as the
-remote branch. This option defaults to true.</p>
-</dd>
-<dt class="hdlist1">branch.autoSetupRebase</dt>
+and <code>--no-track</code> options. This option defaults to <code>true</code>. The valid settings
+are:</p>
+<div class="dlist">
+<dl>
+<dt class="hdlist1"><code>false</code></dt>
<dd>
-<p>When a new branch is created with <em>git branch</em>, <em>git switch</em> or <em>git checkout</em>
-that tracks another branch, this variable tells Git to set
-up pull to rebase instead of merge (see "branch.<name>.rebase").
-When <code>never</code>, rebase is never automatically set to true.
-When <code>local</code>, rebase is set to true for tracked branches of
-other local branches.
-When <code>remote</code>, rebase is set to true for tracked branches of
-remote-tracking branches.
-When <code>always</code>, rebase will be set to true for all tracking
-branches.
-See "branch.autoSetupMerge" for details on how to set up a
-branch to track another branch.
-This option defaults to never.</p>
+<p>no automatic setup is done</p>
</dd>
-<dt class="hdlist1">branch.sort</dt>
+<dt class="hdlist1"><code>true</code></dt>
+<dd>
+<p>automatic setup is done when the starting point is a remote-tracking branch</p>
+</dd>
+<dt class="hdlist1"><code>always</code></dt>
+<dd>
+<p>automatic setup is done when the starting point is either a
+local branch or remote-tracking branch</p>
+</dd>
+<dt class="hdlist1"><code>inherit</code></dt>
+<dd>
+<p>if the starting point has a tracking configuration, it is copied to the new
+branch</p>
+</dd>
+<dt class="hdlist1"><code>simple</code></dt>
+<dd>
+<p>automatic setup is done only when the starting point
+is a remote-tracking branch and the new branch has the same name as the
+remote branch.</p>
+</dd>
+</dl>
+</div>
+</dd>
+<dt class="hdlist1"><code>branch.autoSetupRebase</code></dt>
+<dd>
+<p>When a new branch is created with <code>git</code> <code>branch</code>, <code>git</code> <code>switch</code> or <code>git</code> <code>checkout</code>
+that tracks another branch, this variable tells Git to set
+up pull to rebase instead of merge (see <code>branch.</code><em><name></em><code>.rebase</code>).
+The valid settings are:</p>
+<div class="dlist">
+<dl>
+<dt class="hdlist1"><code>never</code></dt>
+<dd>
+<p>rebase is never automatically set to true.</p>
+</dd>
+<dt class="hdlist1"><code>local</code></dt>
+<dd>
+<p>rebase is set to true for tracked branches of other local branches.</p>
+</dd>
+<dt class="hdlist1"><code>remote</code></dt>
+<dd>
+<p>rebase is set to true for tracked branches of remote-tracking branches.</p>
+</dd>
+<dt class="hdlist1"><code>always</code></dt>
+<dd>
+<p>rebase will be set to true for all tracking branches.</p>
+</dd>
+</dl>
+</div>
+<div class="paragraph">
+<p>See <code>branch.autoSetupMerge</code> for details on how to set up a branch to track another branch.
+This option defaults to <code>never</code>.</p>
+</div>
+</dd>
+<dt class="hdlist1"><code>branch.sort</code></dt>
<dd>
<p>This variable controls the sort ordering of branches when displayed by
-<a href="git-branch.html">git-branch(1)</a>. Without the "--sort=<value>" option provided, the
+<a href="git-branch.html">git-branch(1)</a>. Without the <code>--sort=</code><em><value></em> option provided, the
value of this variable will be used as the default.
See <a href="git-for-each-ref.html">git-for-each-ref(1)</a> field names for valid values.</p>
</dd>
-<dt class="hdlist1">branch.<name>.remote</dt>
+<dt class="hdlist1"><code>branch.</code><em><name></em><code>.remote</code></dt>
<dd>
-<p>When on branch <name>, it tells <em>git fetch</em> and <em>git push</em>
+<p>When on branch <em><name></em>, it tells <code>git</code> <code>fetch</code> and <code>git</code> <code>push</code>
which remote to fetch from or push to. The remote to push to
may be overridden with <code>remote.pushDefault</code> (for all branches).
The remote to push to, for the current branch, may be further
@@ -2294,55 +2331,55 @@
Additionally, . (a period) is the current local repository
(a dot-repository), see <code>branch.</code><em><name></em><code>.merge</code>'s final note below.</p>
</dd>
-<dt class="hdlist1">branch.<name>.pushRemote</dt>
+<dt class="hdlist1"><code>branch.</code><em><name></em><code>.pushRemote</code></dt>
<dd>
-<p>When on branch <name>, it overrides <code>branch.</code><em><name></em><code>.remote</code> for
+<p>When on branch <em><name></em>, it overrides <code>branch.</code><em><name></em><code>.remote</code> for
pushing. It also overrides <code>remote.pushDefault</code> for pushing
-from branch <name>. When you pull from one place (e.g. your
+from branch <em><name></em>. When you pull from one place (e.g. your
upstream) and push to another place (e.g. your own publishing
repository), you would want to set <code>remote.pushDefault</code> to
specify the remote to push to for all branches, and use this
option to override it for a specific branch.</p>
</dd>
-<dt class="hdlist1">branch.<name>.merge</dt>
+<dt class="hdlist1"><code>branch.</code><em><name></em><code>.merge</code></dt>
<dd>
-<p>Defines, together with branch.<name>.remote, the upstream branch
-for the given branch. It tells <em>git fetch</em>/<em>git pull</em>/<em>git rebase</em> which
-branch to merge and can also affect <em>git push</em> (see push.default).
-When in branch <name>, it tells <em>git fetch</em> the default
-refspec to be marked for merging in FETCH_HEAD. The value is
+<p>Defines, together with <code>branch.</code><em><name></em><code>.remote</code>, the upstream branch
+for the given branch. It tells <code>git</code> <code>fetch</code>/<code>git</code> <code>pull</code>/<code>git</code> <code>rebase</code> which
+branch to merge and can also affect <code>git</code> <code>push</code> (see <code>push.default</code>).
+When in branch <em><name></em>, it tells <code>git</code> <code>fetch</code> the default
+refspec to be marked for merging in <code>FETCH_HEAD</code>. The value is
handled like the remote part of a refspec, and must match a
ref which is fetched from the remote given by
-"branch.<name>.remote".
-The merge information is used by <em>git pull</em> (which first calls
-<em>git fetch</em>) to lookup the default branch for merging. Without
-this option, <em>git pull</em> defaults to merge the first refspec fetched.
+<code>branch.</code><em><name></em><code>.remote</code>.
+The merge information is used by <code>git</code> <code>pull</code> (which first calls
+<code>git</code> <code>fetch</code>) to lookup the default branch for merging. Without
+this option, <code>git</code> <code>pull</code> defaults to merge the first refspec fetched.
Specify multiple values to get an octopus merge.
-If you wish to setup <em>git pull</em> so that it merges into <name> from
+If you wish to setup <code>git</code> <code>pull</code> so that it merges into <name> from
another branch in the local repository, you can point
branch.<name>.merge to the desired branch, and use the relative path
-setting . (a period) for branch.<name>.remote.</p>
+setting . (a period) for <code>branch.</code><em><name></em><code>.remote</code>.</p>
</dd>
-<dt class="hdlist1">branch.<name>.mergeOptions</dt>
+<dt class="hdlist1"><code>branch.</code><em><name></em><code>.mergeOptions</code></dt>
<dd>
-<p>Sets default options for merging into branch <name>. The syntax and
+<p>Sets default options for merging into branch <em><name></em>. The syntax and
supported options are the same as those of <a href="git-merge.html">git-merge(1)</a>, but
option values containing whitespace characters are currently not
supported.</p>
</dd>
-<dt class="hdlist1">branch.<name>.rebase</dt>
+<dt class="hdlist1"><code>branch.</code><em><name></em><code>.rebase</code></dt>
<dd>
-<p>When true, rebase the branch <name> on top of the fetched branch,
+<p>When true, rebase the branch <em><name></em> on top of the fetched branch,
instead of merging the default branch from the default remote when
-"git pull" is run. See "pull.rebase" for doing this in a non
+<code>git</code> <code>pull</code> is run. See <code>pull.rebase</code> for doing this in a non
branch-specific manner.</p>
<div class="paragraph">
-<p>When <code>merges</code> (or just <em>m</em>), pass the <code>--rebase-merges</code> option to <em>git rebase</em>
+<p>When <code>merges</code> (or just <code>m</code>), pass the <code>--rebase-merges</code> option to <code>git</code> <code>rebase</code>
so that the local merge commits are included in the rebase (see
<a href="git-rebase.html">git-rebase(1)</a> for details).</p>
</div>
<div class="paragraph">
-<p>When the value is <code>interactive</code> (or just <em>i</em>), the rebase is run in interactive
+<p>When the value is <code>interactive</code> (or just <code>i</code>), the rebase is run in interactive
mode.</p>
</div>
<div class="paragraph">
@@ -2351,12 +2388,12 @@
for details).</p>
</div>
</dd>
-<dt class="hdlist1">branch.<name>.description</dt>
+<dt class="hdlist1"><code>branch.</code><em><name></em><code>.description</code></dt>
<dd>
<p>Branch description, can be edited with
<code>git</code> <code>branch</code> <code>--edit-description</code>. Branch description is
-automatically added to the format-patch cover letter or
-request-pull summary.</p>
+automatically added to the <code>format-patch</code> cover letter or
+<code>request-pull</code> summary.</p>
</dd>
<dt class="hdlist1">browser.<tool>.cmd</dt>
<dd>
@@ -7406,8 +7443,8 @@
server will be accepted. By accepting a promisor remote, the
client agrees that the server might omit objects that are
lazily fetchable from this promisor remote from its responses
-to "fetch" and "clone" requests from the client. See
-<a href="gitprotocol-v2.html">gitprotocol-v2(5)</a>.</p>
+to "fetch" and "clone" requests from the client. Name and URL
+comparisons are case sensitive. See <a href="gitprotocol-v2.html">gitprotocol-v2(5)</a>.</p>
</dd>
<dt class="hdlist1">protocol.allow</dt>
<dd>
diff --git a/git-pack-refs.adoc b/git-pack-refs.adoc
index 2dcabaf..652c549 100644
--- a/git-pack-refs.adoc
+++ b/git-pack-refs.adoc
@@ -88,10 +88,10 @@
accumulate exclusion patterns. Use `--no-exclude` to clear and reset the list of
patterns. If a ref is already packed, including it with `--exclude` will not
unpack it.
-
++
When used with `--all`, pack only loose refs which do not match any of
the provided `--exclude` patterns.
-
++
When used with `--include`, refs provided to `--include`, minus refs that are
provided to `--exclude` will be packed.
diff --git a/git-pack-refs.html b/git-pack-refs.html
index 2671c24..838af3e 100644
--- a/git-pack-refs.html
+++ b/git-pack-refs.html
@@ -547,9 +547,6 @@
accumulate exclusion patterns. Use <code>--no-exclude</code> to clear and reset the list of
patterns. If a ref is already packed, including it with <code>--exclude</code> will not
unpack it.</p>
-</dd>
-</dl>
-</div>
<div class="paragraph">
<p>When used with <code>--all</code>, pack only loose refs which do not match any of
the provided <code>--exclude</code> patterns.</p>
@@ -558,6 +555,9 @@
<p>When used with <code>--include</code>, refs provided to <code>--include</code>, minus refs that are
provided to <code>--exclude</code> will be packed.</p>
</div>
+</dd>
+</dl>
+</div>
</div>
</div>
<div class="sect1">
@@ -581,7 +581,7 @@
</div>
<div id="footer">
<div id="footer-text">
-Last updated 2025-02-14 21:38:14 -0800
+Last updated 2025-04-07 15:21:58 -0700
</div>
</div>
</body>
diff --git a/git-repack.adoc b/git-repack.adoc
index 5852a5c..e1cd75e 100644
--- a/git-repack.adoc
+++ b/git-repack.adoc
@@ -77,15 +77,18 @@
Only useful with `--cruft -d`.
--max-cruft-size=<n>::
- Repack cruft objects into packs as large as `<n>` bytes before
- creating new packs. As long as there are enough cruft packs
- smaller than `<n>`, repacking will cause a new cruft pack to
- be created containing objects from any combined cruft packs,
- along with any new unreachable objects. Cruft packs larger than
- `<n>` will not be modified. When the new cruft pack is larger
- than `<n>` bytes, it will be split into multiple packs, all of
- which are guaranteed to be at most `<n>` bytes in size. Only
- useful with `--cruft -d`.
+ Overrides `--max-pack-size` for cruft packs. Inherits the value of
+ `--max-pack-size` (if any) by default. See the documentation for
+ `--max-pack-size` for more details.
+
+--combine-cruft-below-size=<n>::
+ When generating cruft packs without pruning, only repack
+ existing cruft packs whose size is strictly less than `<n>`,
+ where `<n>` represents a number of bytes, which can optionally
+ be suffixed with "k", "m", or "g". Cruft packs whose size is
+ greater than or equal to `<n>` are left as-is and not repacked.
+ Useful when you want to avoid repacking large cruft pack(s) in
+ repositories that have many and/or large unreachable objects.
--expire-to=<dir>::
Write a cruft pack containing pruned objects (if any) to the
diff --git a/git-repack.html b/git-repack.html
index 558d253..68a18dc 100644
--- a/git-repack.html
+++ b/git-repack.html
@@ -537,15 +537,19 @@
</dd>
<dt class="hdlist1">--max-cruft-size=<n></dt>
<dd>
-<p>Repack cruft objects into packs as large as <em><n></em> bytes before
-creating new packs. As long as there are enough cruft packs
-smaller than <em><n></em>, repacking will cause a new cruft pack to
-be created containing objects from any combined cruft packs,
-along with any new unreachable objects. Cruft packs larger than
-<em><n></em> will not be modified. When the new cruft pack is larger
-than <em><n></em> bytes, it will be split into multiple packs, all of
-which are guaranteed to be at most <em><n></em> bytes in size. Only
-useful with <code>--cruft</code> <code>-d</code>.</p>
+<p>Overrides <code>--max-pack-size</code> for cruft packs. Inherits the value of
+<code>--max-pack-size</code> (if any) by default. See the documentation for
+<code>--max-pack-size</code> for more details.</p>
+</dd>
+<dt class="hdlist1">--combine-cruft-below-size=<n></dt>
+<dd>
+<p>When generating cruft packs without pruning, only repack
+existing cruft packs whose size is strictly less than <em><n></em>,
+where <em><n></em> represents a number of bytes, which can optionally
+be suffixed with "k", "m", or "g". Cruft packs whose size is
+greater than or equal to <em><n></em> are left as-is and not repacked.
+Useful when you want to avoid repacking large cruft pack(s) in
+repositories that have many and/or large unreachable objects.</p>
</dd>
<dt class="hdlist1">--expire-to=<dir></dt>
<dd>
@@ -790,7 +794,7 @@
</div>
<div id="footer">
<div id="footer-text">
-Last updated 2025-02-14 21:38:14 -0800
+Last updated 2025-04-07 15:21:58 -0700
</div>
</div>
</body>
diff --git a/git-restore.adoc b/git-restore.adoc
index 751f01b..877b777 100644
--- a/git-restore.adoc
+++ b/git-restore.adoc
@@ -51,9 +51,6 @@
restore source and the restore location. See the "Interactive
Mode" section of linkgit:git-add[1] to learn how to operate
the `--patch` mode.
-+
-Note that `--patch` can accept no pathspec and will prompt to restore
-all modified paths.
`-W`::
`--worktree`::
diff --git a/git-restore.html b/git-restore.html
index 1f3b436..7d49c74 100644
--- a/git-restore.html
+++ b/git-restore.html
@@ -512,10 +512,6 @@
restore source and the restore location. See the "Interactive
Mode" section of <a href="git-add.html">git-add(1)</a> to learn how to operate
the <code>--patch</code> mode.</p>
-<div class="paragraph">
-<p>Note that <code>--patch</code> can accept no pathspec and will prompt to restore
-all modified paths.</p>
-</div>
</dd>
<dt class="hdlist1"><code>-W</code></dt>
<dt class="hdlist1"><code>--worktree</code></dt>
@@ -738,7 +734,7 @@
</div>
<div id="footer">
<div id="footer-text">
-Last updated 2025-02-14 21:38:14 -0800
+Last updated 2025-04-07 15:21:58 -0700
</div>
</div>
</body>