Autogenerated HTML docs for v2.48.0-rc2
[git-htmldocs.git] / git-bundle.html
blob6f6d4b9e93bab559e097b1d1a9b534ebd485d4ef
1 <!DOCTYPE html>
2 <html xmlns="http://www.w3.org/1999/xhtml" lang="en">
3 <head>
4 <meta charset="UTF-8"/>
5 <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
6 <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
7 <meta name="generator" content="Asciidoctor 2.0.20"/>
8 <title>git-bundle(1)</title>
9 <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"/>
10 <style>
11 /*! Asciidoctor default stylesheet | MIT License | https://asciidoctor.org */
12 /* Uncomment the following line when using as a custom stylesheet */
13 /* @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"; */
14 html{font-family:sans-serif;-webkit-text-size-adjust:100%}
15 a{background:none}
16 a:focus{outline:thin dotted}
17 a:active,a:hover{outline:0}
18 h1{font-size:2em;margin:.67em 0}
19 b,strong{font-weight:bold}
20 abbr{font-size:.9em}
21 abbr[title]{cursor:help;border-bottom:1px dotted #dddddf;text-decoration:none}
22 dfn{font-style:italic}
23 hr{height:0}
24 mark{background:#ff0;color:#000}
25 code,kbd,pre,samp{font-family:monospace;font-size:1em}
26 pre{white-space:pre-wrap}
27 q{quotes:"\201C" "\201D" "\2018" "\2019"}
28 small{font-size:80%}
29 sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}
30 sup{top:-.5em}
31 sub{bottom:-.25em}
32 img{border:0}
33 svg:not(:root){overflow:hidden}
34 figure{margin:0}
35 audio,video{display:inline-block}
36 audio:not([controls]){display:none;height:0}
37 fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}
38 legend{border:0;padding:0}
39 button,input,select,textarea{font-family:inherit;font-size:100%;margin:0}
40 button,input{line-height:normal}
41 button,select{text-transform:none}
42 button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}
43 button[disabled],html input[disabled]{cursor:default}
44 input[type=checkbox],input[type=radio]{padding:0}
45 button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}
46 textarea{overflow:auto;vertical-align:top}
47 table{border-collapse:collapse;border-spacing:0}
48 *,::before,::after{box-sizing:border-box}
49 html,body{font-size:100%}
50 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}
51 a:hover{cursor:pointer}
52 img,object,embed{max-width:100%;height:auto}
53 object,embed{height:100%}
54 img{-ms-interpolation-mode:bicubic}
55 .left{float:left!important}
56 .right{float:right!important}
57 .text-left{text-align:left!important}
58 .text-right{text-align:right!important}
59 .text-center{text-align:center!important}
60 .text-justify{text-align:justify!important}
61 .hide{display:none}
62 img,object,svg{display:inline-block;vertical-align:middle}
63 textarea{height:auto;min-height:50px}
64 select{width:100%}
65 .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}
66 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}
67 a{color:#2156a5;text-decoration:underline;line-height:inherit}
68 a:hover,a:focus{color:#1d4b8f}
69 a img{border:0}
70 p{line-height:1.6;margin-bottom:1.25em;text-rendering:optimizeLegibility}
71 p aside{font-size:.875em;line-height:1.35;font-style:italic}
72 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}
73 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}
74 h1{font-size:2.125em}
75 h2{font-size:1.6875em}
76 h3,#toctitle,.sidebarblock>.content>.title{font-size:1.375em}
77 h4,h5{font-size:1.125em}
78 h6{font-size:1em}
79 hr{border:solid #dddddf;border-width:1px 0 0;clear:both;margin:1.25em 0 1.1875em}
80 em,i{font-style:italic;line-height:inherit}
81 strong,b{font-weight:bold;line-height:inherit}
82 small{font-size:60%;line-height:inherit}
83 code{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;font-weight:400;color:rgba(0,0,0,.9)}
84 ul,ol,dl{line-height:1.6;margin-bottom:1.25em;list-style-position:outside;font-family:inherit}
85 ul,ol{margin-left:1.5em}
86 ul li ul,ul li ol{margin-left:1.25em;margin-bottom:0}
87 ul.circle{list-style-type:circle}
88 ul.disc{list-style-type:disc}
89 ul.square{list-style-type:square}
90 ul.circle ul:not([class]),ul.disc ul:not([class]),ul.square ul:not([class]){list-style:inherit}
91 ol li ul,ol li ol{margin-left:1.25em;margin-bottom:0}
92 dl dt{margin-bottom:.3125em;font-weight:bold}
93 dl dd{margin-bottom:1.25em}
94 blockquote{margin:0 0 1.25em;padding:.5625em 1.25em 0 1.1875em;border-left:1px solid #ddd}
95 blockquote,blockquote p{line-height:1.6;color:rgba(0,0,0,.85)}
96 @media screen and (min-width:768px){h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2}
97 h1{font-size:2.75em}
98 h2{font-size:2.3125em}
99 h3,#toctitle,.sidebarblock>.content>.title{font-size:1.6875em}
100 h4{font-size:1.4375em}}
101 table{background:#fff;margin-bottom:1.25em;border:1px solid #dedede;word-wrap:normal}
102 table thead,table tfoot{background:#f7f8f7}
103 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}
104 table tr th,table tr td{padding:.5625em .625em;font-size:inherit;color:rgba(0,0,0,.8)}
105 table tr.even,table tr.alt{background:#f8f8f7}
106 table thead tr th,table tfoot tr th,table tbody tr td,table tr td,table tfoot tr td{line-height:1.6}
107 h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2;word-spacing:-.05em}
108 h1 strong,h2 strong,h3 strong,#toctitle strong,.sidebarblock>.content>.title strong,h4 strong,h5 strong,h6 strong{font-weight:400}
109 .center{margin-left:auto;margin-right:auto}
110 .stretch{width:100%}
111 .clearfix::before,.clearfix::after,.float-group::before,.float-group::after{content:" ";display:table}
112 .clearfix::after,.float-group::after{clear:both}
113 :not(pre).nobreak{word-wrap:normal}
114 :not(pre).nowrap{white-space:nowrap}
115 :not(pre).pre-wrap{white-space:pre-wrap}
116 :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}
117 pre{color:rgba(0,0,0,.9);font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;line-height:1.45;text-rendering:optimizeSpeed}
118 pre code,pre pre{color:inherit;font-size:inherit;line-height:inherit}
119 pre>code{display:block}
120 pre.nowrap,pre.nowrap pre{white-space:pre;word-wrap:normal}
121 em em{font-style:normal}
122 strong strong{font-weight:400}
123 .keyseq{color:rgba(51,51,51,.8)}
124 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}
125 .keyseq kbd:first-child{margin-left:0}
126 .keyseq kbd:last-child{margin-right:0}
127 .menuseq,.menuref{color:#000}
128 .menuseq b:not(.caret),.menuref{font-weight:inherit}
129 .menuseq{word-spacing:-.02em}
130 .menuseq b.caret{font-size:1.25em;line-height:.8}
131 .menuseq i.caret{font-weight:bold;text-align:center;width:.45em}
132 b.button::before,b.button::after{position:relative;top:-1px;font-weight:400}
133 b.button::before{content:"[";padding:0 3px 0 2px}
134 b.button::after{content:"]";padding:0 2px 0 3px}
135 p a>code:hover{color:rgba(0,0,0,.9)}
136 #header,#content,#footnotes,#footer{width:100%;margin:0 auto;max-width:62.5em;*zoom:1;position:relative;padding-left:.9375em;padding-right:.9375em}
137 #header::before,#header::after,#content::before,#content::after,#footnotes::before,#footnotes::after,#footer::before,#footer::after{content:" ";display:table}
138 #header::after,#content::after,#footnotes::after,#footer::after{clear:both}
139 #content{margin-top:1.25em}
140 #content::before{content:none}
141 #header>h1:first-child{color:rgba(0,0,0,.85);margin-top:2.25rem;margin-bottom:0}
142 #header>h1:first-child+#toc{margin-top:8px;border-top:1px solid #dddddf}
143 #header>h1:only-child,body.toc2 #header>h1:nth-last-child(2){border-bottom:1px solid #dddddf;padding-bottom:8px}
144 #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}
145 #header .details span:first-child{margin-left:-.125em}
146 #header .details span.email a{color:rgba(0,0,0,.85)}
147 #header .details br{display:none}
148 #header .details br+span::before{content:"\00a0\2013\00a0"}
149 #header .details br+span.author::before{content:"\00a0\22c5\00a0";color:rgba(0,0,0,.85)}
150 #header .details br+span#revremark::before{content:"\00a0|\00a0"}
151 #header #revnumber{text-transform:capitalize}
152 #header #revnumber::after{content:"\00a0"}
153 #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}
154 #toc{border-bottom:1px solid #e7e7e9;padding-bottom:.5em}
155 #toc>ul{margin-left:.125em}
156 #toc ul.sectlevel0>li>a{font-style:italic}
157 #toc ul.sectlevel0 ul.sectlevel1{margin:.5em 0}
158 #toc ul{font-family:"Open Sans","DejaVu Sans",sans-serif;list-style-type:none}
159 #toc li{line-height:1.3334;margin-top:.3334em}
160 #toc a{text-decoration:none}
161 #toc a:active{text-decoration:underline}
162 #toctitle{color:#7a2518;font-size:1.2em}
163 @media screen and (min-width:768px){#toctitle{font-size:1.375em}
164 body.toc2{padding-left:15em;padding-right:0}
165 #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}
166 #toc.toc2 #toctitle{margin-top:0;margin-bottom:.8rem;font-size:1.2em}
167 #toc.toc2>ul{font-size:.9em;margin-bottom:0}
168 #toc.toc2 ul ul{margin-left:0;padding-left:1em}
169 #toc.toc2 ul.sectlevel0 ul.sectlevel1{padding-left:0;margin-top:.5em;margin-bottom:.5em}
170 body.toc2.toc-right{padding-left:0;padding-right:15em}
171 body.toc2.toc-right #toc.toc2{border-right-width:0;border-left:1px solid #e7e7e9;left:auto;right:0}}
172 @media screen and (min-width:1280px){body.toc2{padding-left:20em;padding-right:0}
173 #toc.toc2{width:20em}
174 #toc.toc2 #toctitle{font-size:1.375em}
175 #toc.toc2>ul{font-size:.95em}
176 #toc.toc2 ul ul{padding-left:1.25em}
177 body.toc2.toc-right{padding-left:0;padding-right:20em}}
178 #content #toc{border:1px solid #e0e0dc;margin-bottom:1.25em;padding:1.25em;background:#f8f8f7;border-radius:4px}
179 #content #toc>:first-child{margin-top:0}
180 #content #toc>:last-child{margin-bottom:0}
181 #footer{max-width:none;background:rgba(0,0,0,.8);padding:1.25em}
182 #footer-text{color:hsla(0,0%,100%,.8);line-height:1.44}
183 #content{margin-bottom:.625em}
184 .sect1{padding-bottom:.625em}
185 @media screen and (min-width:768px){#content{margin-bottom:1.25em}
186 .sect1{padding-bottom:1.25em}}
187 .sect1:last-child{padding-bottom:0}
188 .sect1+.sect1{border-top:1px solid #e7e7e9}
189 #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}
190 #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}
191 #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}
192 #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}
193 #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}
194 details,.audioblock,.imageblock,.literalblock,.listingblock,.stemblock,.videoblock{margin-bottom:1.25em}
195 details{margin-left:1.25rem}
196 details>summary{cursor:pointer;display:block;position:relative;line-height:1.6;margin-bottom:.625rem;outline:none;-webkit-tap-highlight-color:transparent}
197 details>summary::-webkit-details-marker{display:none}
198 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%)}
199 details[open]>summary::before{border:solid transparent;border-top:solid;border-width:.5em .3em 0;transform:translateY(15%)}
200 details>summary::after{content:"";width:1.25rem;height:1em;position:absolute;top:.3em;left:-1.25rem}
201 .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}
202 table.tableblock.fit-content>caption.title{white-space:nowrap;width:0}
203 .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)}
204 .admonitionblock>table{border-collapse:separate;border:0;background:none;width:100%}
205 .admonitionblock>table td.icon{text-align:center;width:80px}
206 .admonitionblock>table td.icon img{max-width:none}
207 .admonitionblock>table td.icon .title{font-weight:bold;font-family:"Open Sans","DejaVu Sans",sans-serif;text-transform:uppercase}
208 .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}
209 .admonitionblock>table td.content>:last-child>:last-child{margin-bottom:0}
210 .exampleblock>.content{border:1px solid #e6e6e6;margin-bottom:1.25em;padding:1.25em;background:#fff;border-radius:4px}
211 .sidebarblock{border:1px solid #dbdbd6;margin-bottom:1.25em;padding:1.25em;background:#f3f3f2;border-radius:4px}
212 .sidebarblock>.content>.title{color:#7a2518;margin-top:0;text-align:center}
213 .exampleblock>.content>:first-child,.sidebarblock>.content>:first-child{margin-top:0}
214 .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}
215 .literalblock pre,.listingblock>.content>pre{border-radius:4px;overflow-x:auto;padding:1em;font-size:.8125em}
216 @media screen and (min-width:768px){.literalblock pre,.listingblock>.content>pre{font-size:.90625em}}
217 @media screen and (min-width:1280px){.literalblock pre,.listingblock>.content>pre{font-size:1em}}
218 .literalblock pre,.listingblock>.content>pre:not(.highlight),.listingblock>.content>pre[class=highlight],.listingblock>.content>pre[class^="highlight "]{background:#f7f7f8}
219 .literalblock.output pre{color:#f7f7f8;background:rgba(0,0,0,.9)}
220 .listingblock>.content{position:relative}
221 .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}
222 .listingblock:hover code[data-lang]::before{display:block}
223 .listingblock.terminal pre .command::before{content:attr(data-prompt);padding-right:.5em;color:inherit;opacity:.5}
224 .listingblock.terminal pre .command:not([data-prompt])::before{content:"$"}
225 .listingblock pre.highlightjs{padding:0}
226 .listingblock pre.highlightjs>code{padding:1em;border-radius:4px}
227 .listingblock pre.prettyprint{border-width:0}
228 .prettyprint{background:#f7f7f8}
229 pre.prettyprint .linenums{line-height:1.45;margin-left:2em}
230 pre.prettyprint li{background:none;list-style-type:inherit;padding-left:0}
231 pre.prettyprint li code[data-lang]::before{opacity:1}
232 pre.prettyprint li:not(:first-child) code[data-lang]::before{display:none}
233 table.linenotable{border-collapse:separate;border:0;margin-bottom:0;background:none}
234 table.linenotable td[class]{color:inherit;vertical-align:top;padding:0;line-height:inherit;white-space:normal}
235 table.linenotable td.code{padding-left:.75em}
236 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}
237 pre.pygments span.linenos{display:inline-block;margin-right:.75em}
238 .quoteblock{margin:0 1em 1.25em 1.5em;display:table}
239 .quoteblock:not(.excerpt)>.title{margin-left:-1.5em;margin-bottom:.75em}
240 .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}
241 .quoteblock blockquote{margin:0;padding:0;border:0}
242 .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)}
243 .quoteblock blockquote>.paragraph:last-child p{margin-bottom:0}
244 .quoteblock .attribution{margin-top:.75em;margin-right:.5ex;text-align:right}
245 .verseblock{margin:0 1em 1.25em}
246 .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}
247 .verseblock pre strong{font-weight:400}
248 .verseblock .attribution{margin-top:1.25rem;margin-left:.5ex}
249 .quoteblock .attribution,.verseblock .attribution{font-size:.9375em;line-height:1.45;font-style:italic}
250 .quoteblock .attribution br,.verseblock .attribution br{display:none}
251 .quoteblock .attribution cite,.verseblock .attribution cite{display:block;letter-spacing:-.025em;color:rgba(0,0,0,.6)}
252 .quoteblock.abstract blockquote::before,.quoteblock.excerpt blockquote::before,.quoteblock .quoteblock blockquote::before{display:none}
253 .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}
254 .quoteblock.abstract{margin:0 1em 1.25em;display:block}
255 .quoteblock.abstract>.title{margin:0 0 .375em;font-size:1.15em;text-align:center}
256 .quoteblock.excerpt>blockquote,.quoteblock .quoteblock{padding:0 0 .25em 1em;border-left:.25em solid #dddddf}
257 .quoteblock.excerpt,.quoteblock .quoteblock{margin-left:0}
258 .quoteblock.excerpt blockquote,.quoteblock.excerpt p,.quoteblock .quoteblock blockquote,.quoteblock .quoteblock p{color:inherit;font-size:1.0625rem}
259 .quoteblock.excerpt .attribution,.quoteblock .quoteblock .attribution{color:inherit;font-size:.85rem;text-align:left;margin-right:0}
260 p.tableblock:last-child{margin-bottom:0}
261 td.tableblock>.content{margin-bottom:1.25em;word-wrap:anywhere}
262 td.tableblock>.content>:last-child{margin-bottom:-1.25em}
263 table.tableblock,th.tableblock,td.tableblock{border:0 solid #dedede}
264 table.grid-all>*>tr>*{border-width:1px}
265 table.grid-cols>*>tr>*{border-width:0 1px}
266 table.grid-rows>*>tr>*{border-width:1px 0}
267 table.frame-all{border-width:1px}
268 table.frame-ends{border-width:1px 0}
269 table.frame-sides{border-width:0 1px}
270 table.frame-none>colgroup+*>:first-child>*,table.frame-sides>colgroup+*>:first-child>*{border-top-width:0}
271 table.frame-none>:last-child>:last-child>*,table.frame-sides>:last-child>:last-child>*{border-bottom-width:0}
272 table.frame-none>*>tr>:first-child,table.frame-ends>*>tr>:first-child{border-left-width:0}
273 table.frame-none>*>tr>:last-child,table.frame-ends>*>tr>:last-child{border-right-width:0}
274 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}
275 th.halign-left,td.halign-left{text-align:left}
276 th.halign-right,td.halign-right{text-align:right}
277 th.halign-center,td.halign-center{text-align:center}
278 th.valign-top,td.valign-top{vertical-align:top}
279 th.valign-bottom,td.valign-bottom{vertical-align:bottom}
280 th.valign-middle,td.valign-middle{vertical-align:middle}
281 table thead th,table tfoot th{font-weight:bold}
282 tbody tr th{background:#f7f8f7}
283 tbody tr th,tbody tr th p,tfoot tr th,tfoot tr th p{color:rgba(0,0,0,.8);font-weight:bold}
284 p.tableblock>code:only-child{background:none;padding:0}
285 p.tableblock{font-size:1em}
286 ol{margin-left:1.75em}
287 ul li ol{margin-left:1.5em}
288 dl dd{margin-left:1.125em}
289 dl dd:last-child,dl dd:last-child>:last-child{margin-bottom:0}
290 li p,ul dd,ol dd,.olist .olist,.ulist .ulist,.ulist .olist,.olist .ulist{margin-bottom:.625em}
291 ul.checklist,ul.none,ol.none,ul.no-bullet,ol.no-bullet,ol.unnumbered,ul.unstyled,ol.unstyled{list-style-type:none}
292 ul.no-bullet,ol.no-bullet,ol.unnumbered{margin-left:.625em}
293 ul.unstyled,ol.unstyled{margin-left:0}
294 li>p:empty:only-child::before{content:"";display:inline-block}
295 ul.checklist>li>p:first-child{margin-left:-1em}
296 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}
297 ul.checklist>li>p:first-child>input[type=checkbox]:first-child{margin-right:.25em}
298 ul.inline{display:flex;flex-flow:row wrap;list-style:none;margin:0 0 .625em -1.25em}
299 ul.inline>li{margin-left:1.25em}
300 .unstyled dl dt{font-weight:400;font-style:normal}
301 ol.arabic{list-style-type:decimal}
302 ol.decimal{list-style-type:decimal-leading-zero}
303 ol.loweralpha{list-style-type:lower-alpha}
304 ol.upperalpha{list-style-type:upper-alpha}
305 ol.lowerroman{list-style-type:lower-roman}
306 ol.upperroman{list-style-type:upper-roman}
307 ol.lowergreek{list-style-type:lower-greek}
308 .hdlist>table,.colist>table{border:0;background:none}
309 .hdlist>table>tbody>tr,.colist>table>tbody>tr{background:none}
310 td.hdlist1,td.hdlist2{vertical-align:top;padding:0 .625em}
311 td.hdlist1{font-weight:bold;padding-bottom:1.25em}
312 td.hdlist2{word-wrap:anywhere}
313 .literalblock+.colist,.listingblock+.colist{margin-top:-.5em}
314 .colist td:not([class]):first-child{padding:.4em .75em 0;line-height:1;vertical-align:top}
315 .colist td:not([class]):first-child img{max-width:none}
316 .colist td:not([class]):last-child{padding:.25em 0}
317 .thumb,.th{line-height:0;display:inline-block;border:4px solid #fff;box-shadow:0 0 0 1px #ddd}
318 .imageblock.left{margin:.25em .625em 1.25em 0}
319 .imageblock.right{margin:.25em 0 1.25em .625em}
320 .imageblock>.title{margin-bottom:0}
321 .imageblock.thumb,.imageblock.th{border-width:6px}
322 .imageblock.thumb>.title,.imageblock.th>.title{padding:0 .125em}
323 .image.left,.image.right{margin-top:.25em;margin-bottom:.25em;display:inline-block;line-height:0}
324 .image.left{margin-right:.625em}
325 .image.right{margin-left:.625em}
326 a.image{text-decoration:none;display:inline-block}
327 a.image object{pointer-events:none}
328 sup.footnote,sup.footnoteref{font-size:.875em;position:static;vertical-align:super}
329 sup.footnote a,sup.footnoteref a{text-decoration:none}
330 sup.footnote a:active,sup.footnoteref a:active{text-decoration:underline}
331 #footnotes{padding-top:.75em;padding-bottom:.75em;margin-bottom:.625em}
332 #footnotes hr{width:20%;min-width:6.25em;margin:-.25em 0 .75em;border-width:1px 0 0}
333 #footnotes .footnote{padding:0 .375em 0 .225em;line-height:1.3334;font-size:.875em;margin-left:1.2em;margin-bottom:.2em}
334 #footnotes .footnote a:first-of-type{font-weight:bold;text-decoration:none;margin-left:-1.05em}
335 #footnotes .footnote:last-of-type{margin-bottom:0}
336 #content #footnotes{margin-top:-.625em;margin-bottom:0;padding:.75em 0}
337 div.unbreakable{page-break-inside:avoid}
338 .big{font-size:larger}
339 .small{font-size:smaller}
340 .underline{text-decoration:underline}
341 .overline{text-decoration:overline}
342 .line-through{text-decoration:line-through}
343 .aqua{color:#00bfbf}
344 .aqua-background{background:#00fafa}
345 .black{color:#000}
346 .black-background{background:#000}
347 .blue{color:#0000bf}
348 .blue-background{background:#0000fa}
349 .fuchsia{color:#bf00bf}
350 .fuchsia-background{background:#fa00fa}
351 .gray{color:#606060}
352 .gray-background{background:#7d7d7d}
353 .green{color:#006000}
354 .green-background{background:#007d00}
355 .lime{color:#00bf00}
356 .lime-background{background:#00fa00}
357 .maroon{color:#600000}
358 .maroon-background{background:#7d0000}
359 .navy{color:#000060}
360 .navy-background{background:#00007d}
361 .olive{color:#606000}
362 .olive-background{background:#7d7d00}
363 .purple{color:#600060}
364 .purple-background{background:#7d007d}
365 .red{color:#bf0000}
366 .red-background{background:#fa0000}
367 .silver{color:#909090}
368 .silver-background{background:#bcbcbc}
369 .teal{color:#006060}
370 .teal-background{background:#007d7d}
371 .white{color:#bfbfbf}
372 .white-background{background:#fafafa}
373 .yellow{color:#bfbf00}
374 .yellow-background{background:#fafa00}
375 span.icon>.fa{cursor:default}
376 a span.icon>.fa{cursor:inherit}
377 .admonitionblock td.icon [class^="fa icon-"]{font-size:2.5em;text-shadow:1px 1px 2px rgba(0,0,0,.5);cursor:default}
378 .admonitionblock td.icon .icon-note::before{content:"\f05a";color:#19407c}
379 .admonitionblock td.icon .icon-tip::before{content:"\f0eb";text-shadow:1px 1px 2px rgba(155,155,0,.8);color:#111}
380 .admonitionblock td.icon .icon-warning::before{content:"\f071";color:#bf6900}
381 .admonitionblock td.icon .icon-caution::before{content:"\f06d";color:#bf3400}
382 .admonitionblock td.icon .icon-important::before{content:"\f06a";color:#bf0000}
383 .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}
384 .conum[data-value] *{color:#fff!important}
385 .conum[data-value]+b{display:none}
386 .conum[data-value]::after{content:attr(data-value)}
387 pre .conum[data-value]{position:relative;top:-.125em}
388 b.conum *{color:inherit!important}
389 .conum:not([data-value]):empty{display:none}
390 dt,th.tableblock,td.content,div.footnote{text-rendering:optimizeLegibility}
391 h1,h2,p,td.content,span.alt,summary{letter-spacing:-.01em}
392 p strong,td.content strong,div.footnote strong{letter-spacing:-.005em}
393 p,blockquote,dt,td.content,td.hdlist1,span.alt,summary{font-size:1.0625rem}
394 p{margin-bottom:1.25rem}
395 .sidebarblock p,.sidebarblock dt,.sidebarblock td.content,p.tableblock{font-size:1em}
396 .exampleblock>.content{background:#fffef7;border-color:#e0e0dc;box-shadow:0 1px 4px #e0e0dc}
397 .print-only{display:none!important}
398 @page{margin:1.25cm .75cm}
399 @media print{*{box-shadow:none!important;text-shadow:none!important}
400 html{font-size:80%}
401 a{color:inherit!important;text-decoration:underline!important}
402 a.bare,a[href^="#"],a[href^="mailto:"]{text-decoration:none!important}
403 a[href^="http:"]:not(.bare)::after,a[href^="https:"]:not(.bare)::after{content:"(" attr(href) ")";display:inline-block;font-size:.875em;padding-left:.25em}
404 abbr[title]{border-bottom:1px dotted}
405 abbr[title]::after{content:" (" attr(title) ")"}
406 pre,blockquote,tr,img,object,svg{page-break-inside:avoid}
407 thead{display:table-header-group}
408 svg{max-width:100%}
409 p,blockquote,dt,td.content{font-size:1em;orphans:3;widows:3}
410 h2,h3,#toctitle,.sidebarblock>.content>.title{page-break-after:avoid}
411 #header,#content,#footnotes,#footer{max-width:none}
412 #toc,.sidebarblock,.exampleblock>.content{background:none!important}
413 #toc{border-bottom:1px solid #dddddf!important;padding-bottom:0!important}
414 body.book #header{text-align:center}
415 body.book #header>h1:first-child{border:0!important;margin:2.5em 0 1em}
416 body.book #header .details{border:0!important;display:block;padding:0!important}
417 body.book #header .details span:first-child{margin-left:0!important}
418 body.book #header .details br{display:block}
419 body.book #header .details br+span::before{content:none!important}
420 body.book #toc{border:0!important;text-align:left!important;padding:0!important;margin:0!important}
421 body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-break-before:always}
422 .listingblock code[data-lang]::before{display:block}
423 #footer{padding:0 .9375em}
424 .hide-on-print{display:none!important}
425 .print-only{display:block!important}
426 .hide-for-print{display:none!important}
427 .show-for-print{display:inherit!important}}
428 @media amzn-kf8,print{#header>h1:first-child{margin-top:1.25rem}
429 .sect1{padding:0!important}
430 .sect1+.sect1{border:0}
431 #footer{background:none}
432 #footer-text{color:rgba(0,0,0,.6);font-size:.9em}}
433 @media amzn-kf8{#header,#content,#footnotes,#footer{padding:0}}
434 </style>
435 <style>
436 pre>code {
437 display: inline;
439 </style>
440 </head>
441 <body class="manpage">
442 <div id="header">
443 <h1>git-bundle(1) Manual Page</h1>
444 <h2 id="_name">NAME</h2>
445 <div class="sectionbody">
446 <p>git-bundle - Move objects and refs by archive</p>
447 </div>
448 </div>
449 <div id="content">
450 <div class="sect1">
451 <h2 id="_synopsis">SYNOPSIS</h2>
452 <div class="sectionbody">
453 <div class="verseblock">
454 <pre class="content"><em>git bundle</em> create [-q | --quiet | --progress]
455 [--version=&lt;version&gt;] &lt;file&gt; &lt;git-rev-list-args&gt;
456 <em>git bundle</em> verify [-q | --quiet] &lt;file&gt;
457 <em>git bundle</em> list-heads &lt;file&gt; [&lt;refname&gt;&#8230;&#8203;]
458 <em>git bundle</em> unbundle [--progress] &lt;file&gt; [&lt;refname&gt;&#8230;&#8203;]</pre>
459 </div>
460 </div>
461 </div>
462 <div class="sect1">
463 <h2 id="_description">DESCRIPTION</h2>
464 <div class="sectionbody">
465 <div class="paragraph">
466 <p>Create, unpack, and manipulate "bundle" files. Bundles are used for
467 the "offline" transfer of Git objects without an active "server"
468 sitting on the other side of the network connection.</p>
469 </div>
470 <div class="paragraph">
471 <p>They can be used to create both incremental and full backups of a
472 repository (see the "full backup" example in "EXAMPLES"), and to relay
473 the state of the references in one repository to another (see the second
474 example).</p>
475 </div>
476 <div class="paragraph">
477 <p>Git commands that fetch or otherwise "read" via protocols such as
478 <code>ssh://</code> and <code>https://</code> can also operate on bundle files. It is
479 possible <a href="git-clone.html">git-clone(1)</a> a new repository from a bundle, to use
480 <a href="git-fetch.html">git-fetch(1)</a> to fetch from one, and to list the references
481 contained within it with <a href="git-ls-remote.html">git-ls-remote(1)</a>. There&#8217;s no
482 corresponding "write" support, i.e. a <em>git push</em> into a bundle is not
483 supported.</p>
484 </div>
485 </div>
486 </div>
487 <div class="sect1">
488 <h2 id="_bundle_format">BUNDLE FORMAT</h2>
489 <div class="sectionbody">
490 <div class="paragraph">
491 <p>Bundles are .<code>pack</code> files (see <a href="git-pack-objects.html">git-pack-objects(1)</a>) with a
492 header indicating what references are contained within the bundle.</p>
493 </div>
494 <div class="paragraph">
495 <p>Like the packed archive format itself bundles can either be
496 self-contained, or be created using exclusions.
497 See the "OBJECT PREREQUISITES" section below.</p>
498 </div>
499 <div class="paragraph">
500 <p>Bundles created using revision exclusions are "thin packs" created
501 using the <code>--thin</code> option to <a href="git-pack-objects.html">git-pack-objects(1)</a>, and
502 unbundled using the <code>--fix-thin</code> option to <a href="git-index-pack.html">git-index-pack(1)</a>.</p>
503 </div>
504 <div class="paragraph">
505 <p>There is no option to create a "thick pack" when using revision
506 exclusions, and users should not be concerned about the difference. By
507 using "thin packs", bundles created using exclusions are smaller in
508 size. That they&#8217;re "thin" under the hood is merely noted here as a
509 curiosity, and as a reference to other documentation.</p>
510 </div>
511 <div class="paragraph">
512 <p>See <a href="gitformat-bundle.html">gitformat-bundle(5)</a> for more details and the discussion of
513 "thin pack" in <a href="gitformat-pack.html">gitformat-pack(5)</a> for further details.</p>
514 </div>
515 </div>
516 </div>
517 <div class="sect1">
518 <h2 id="_options">OPTIONS</h2>
519 <div class="sectionbody">
520 <div class="dlist">
521 <dl>
522 <dt class="hdlist1">create [options] &lt;file&gt; &lt;git-rev-list-args&gt;</dt>
523 <dd>
524 <p>Used to create a bundle named <em>file</em>. This requires the
525 <em>&lt;git-rev-list-args&gt;</em> arguments to define the bundle contents.
526 <em>options</em> contains the options specific to the <em>git bundle create</em>
527 subcommand. If <em>file</em> is <code>-</code>, the bundle is written to stdout.</p>
528 </dd>
529 <dt class="hdlist1">verify &lt;file&gt;</dt>
530 <dd>
531 <p>Used to check that a bundle file is valid and will apply
532 cleanly to the current repository. This includes checks on the
533 bundle format itself as well as checking that the prerequisite
534 commits exist and are fully linked in the current repository.
535 Then, <em>git bundle</em> prints a list of missing commits, if any.
536 Finally, information about additional capabilities, such as "object
537 filter", is printed. See "Capabilities" in <a href="gitformat-bundle.html">gitformat-bundle(5)</a>
538 for more information. The exit code is zero for success, but will
539 be nonzero if the bundle file is invalid. If <em>file</em> is <code>-</code>, the
540 bundle is read from stdin.</p>
541 </dd>
542 <dt class="hdlist1">list-heads &lt;file&gt;</dt>
543 <dd>
544 <p>Lists the references defined in the bundle. If followed by a
545 list of references, only references matching those given are
546 printed out. If <em>file</em> is <code>-</code>, the bundle is read from stdin.</p>
547 </dd>
548 <dt class="hdlist1">unbundle &lt;file&gt;</dt>
549 <dd>
550 <p>Passes the objects in the bundle to <em>git index-pack</em>
551 for storage in the repository, then prints the names of all
552 defined references. If a list of references is given, only
553 references matching those in the list are printed. This command is
554 really plumbing, intended to be called only by <em>git fetch</em>.
555 If <em>file</em> is <code>-</code>, the bundle is read from stdin.</p>
556 </dd>
557 <dt class="hdlist1">&lt;git-rev-list-args&gt;</dt>
558 <dd>
559 <p>A list of arguments, acceptable to <em>git rev-parse</em> and
560 <em>git rev-list</em> (and containing a named ref, see SPECIFYING REFERENCES
561 below), that specifies the specific objects and references
562 to transport. For example, <code>master~10</code><code>..</code><code>master</code> causes the
563 current master reference to be packaged along with all objects
564 added since its 10th ancestor commit. There is no explicit
565 limit to the number of references and objects that may be
566 packaged.</p>
567 </dd>
568 <dt class="hdlist1">[&lt;refname&gt;&#8230;&#8203;]</dt>
569 <dd>
570 <p>A list of references used to limit the references reported as
571 available. This is principally of use to <em>git fetch</em>, which
572 expects to receive only those references asked for and not
573 necessarily everything in the pack (in this case, <em>git bundle</em> acts
574 like <em>git fetch-pack</em>).</p>
575 </dd>
576 <dt class="hdlist1">--progress</dt>
577 <dd>
578 <p>Progress status is reported on the standard error stream
579 by default when it is attached to a terminal, unless -q
580 is specified. This flag forces progress status even if
581 the standard error stream is not directed to a terminal.</p>
582 </dd>
583 <dt class="hdlist1">--version=&lt;version&gt;</dt>
584 <dd>
585 <p>Specify the bundle version. Version 2 is the older format and can only be
586 used with SHA-1 repositories; the newer version 3 contains capabilities that
587 permit extensions. The default is the oldest supported format, based on the
588 hash algorithm in use.</p>
589 </dd>
590 <dt class="hdlist1">-q</dt>
591 <dt class="hdlist1">--quiet</dt>
592 <dd>
593 <p>This flag makes the command not to report its progress
594 on the standard error stream.</p>
595 </dd>
596 </dl>
597 </div>
598 </div>
599 </div>
600 <div class="sect1">
601 <h2 id="_specifying_references">SPECIFYING REFERENCES</h2>
602 <div class="sectionbody">
603 <div class="paragraph">
604 <p>Revisions must be accompanied by reference names to be packaged in a
605 bundle. Alternatively <code>--all</code> can be used to package all refs.</p>
606 </div>
607 <div class="paragraph">
608 <p>More than one reference may be packaged, and more than one set of prerequisite objects can
609 be specified. The objects packaged are those not contained in the
610 union of the prerequisites.</p>
611 </div>
612 <div class="paragraph">
613 <p>The <em>git bundle create</em> command resolves the reference names for you
614 using the same rules as <code>git</code> <code>rev-parse</code> <code>--abbrev-ref=loose</code>. Each
615 prerequisite can be specified explicitly (e.g. <code>^master~10</code>), or implicitly
616 (e.g. <code>master~10</code><code>..</code><code>master</code>, <code>--since=10.days.ago</code> <code>master</code>).</p>
617 </div>
618 <div class="paragraph">
619 <p>All of these simple cases are OK (assuming we have a "master" and
620 "next" branch):</p>
621 </div>
622 <div class="listingblock">
623 <div class="content">
624 <pre>$ git bundle create master.bundle master
625 $ echo master | git bundle create master.bundle --stdin
626 $ git bundle create master-and-next.bundle master next
627 $ (echo master; echo next) | git bundle create master-and-next.bundle --stdin</pre>
628 </div>
629 </div>
630 <div class="paragraph">
631 <p>And so are these (and the same but omitted <code>--stdin</code> examples):</p>
632 </div>
633 <div class="listingblock">
634 <div class="content">
635 <pre>$ git bundle create recent-master.bundle master~10..master
636 $ git bundle create recent-updates.bundle master~10..master next~5..next</pre>
637 </div>
638 </div>
639 <div class="paragraph">
640 <p>A revision name or a range whose right-hand-side cannot be resolved to
641 a reference is not accepted:</p>
642 </div>
643 <div class="listingblock">
644 <div class="content">
645 <pre>$ git bundle create HEAD.bundle $(git rev-parse HEAD)
646 fatal: Refusing to create empty bundle.
647 $ git bundle create master-yesterday.bundle master~10..master~5
648 fatal: Refusing to create empty bundle.</pre>
649 </div>
650 </div>
651 </div>
652 </div>
653 <div class="sect1">
654 <h2 id="_object_prerequisites">OBJECT PREREQUISITES</h2>
655 <div class="sectionbody">
656 <div class="paragraph">
657 <p>When creating bundles it is possible to create a self-contained bundle
658 that can be unbundled in a repository with no common history, as well
659 as providing negative revisions to exclude objects needed in the
660 earlier parts of the history.</p>
661 </div>
662 <div class="paragraph">
663 <p>Feeding a revision such as <code>new</code> to <code>git</code> <code>bundle</code> <code>create</code> will create a
664 bundle file that contains all the objects reachable from the revision
665 <code>new</code>. That bundle can be unbundled in any repository to obtain a full
666 history that leads to the revision <code>new</code>:</p>
667 </div>
668 <div class="listingblock">
669 <div class="content">
670 <pre>$ git bundle create full.bundle new</pre>
671 </div>
672 </div>
673 <div class="paragraph">
674 <p>A revision range such as <code>old</code><code>..</code><code>new</code> will produce a bundle file that
675 will require the revision <code>old</code> (and any objects reachable from it)
676 to exist for the bundle to be "unbundle"-able:</p>
677 </div>
678 <div class="listingblock">
679 <div class="content">
680 <pre>$ git bundle create full.bundle old..new</pre>
681 </div>
682 </div>
683 <div class="paragraph">
684 <p>A self-contained bundle without any prerequisites can be extracted
685 into anywhere, even into an empty repository, or be cloned from
686 (i.e., <code>new</code>, but not <code>old</code><code>..</code><code>new</code>).</p>
687 </div>
688 <div class="paragraph">
689 <p>It is okay to err on the side of caution, causing the bundle file
690 to contain objects already in the destination, as these are ignored
691 when unpacking at the destination.</p>
692 </div>
693 <div class="paragraph">
694 <p>If you want to provide the same set of refs that a clone directly
695 from the source repository would get, use <code>--branches</code> <code>--tags</code> for
696 the <em>&lt;git-rev-list-args&gt;</em>.</p>
697 </div>
698 <div class="paragraph">
699 <p>The <em>git bundle verify</em> command can be used to check whether your
700 recipient repository has the required prerequisite commits for a
701 bundle.</p>
702 </div>
703 </div>
704 </div>
705 <div class="sect1">
706 <h2 id="_examples">EXAMPLES</h2>
707 <div class="sectionbody">
708 <div class="paragraph">
709 <p>We&#8217;ll discuss two cases:</p>
710 </div>
711 <div class="olist arabic">
712 <ol class="arabic">
713 <li>
714 <p>Taking a full backup of a repository</p>
715 </li>
716 <li>
717 <p>Transferring the history of a repository to another machine when the
718 two machines have no direct connection</p>
719 </li>
720 </ol>
721 </div>
722 <div class="paragraph">
723 <p>First let&#8217;s consider a full backup of the repository. The following
724 command will take a full backup of the repository in the sense that all
725 refs are included in the bundle:</p>
726 </div>
727 <div class="listingblock">
728 <div class="content">
729 <pre>$ git bundle create backup.bundle --all</pre>
730 </div>
731 </div>
732 <div class="paragraph">
733 <p>But note again that this is only for the refs, i.e. you will only
734 include refs and commits reachable from those refs. You will not
735 include other local state, such as the contents of the index, working
736 tree, the stash, per-repository configuration, hooks, etc.</p>
737 </div>
738 <div class="paragraph">
739 <p>You can later recover that repository by using for example
740 <a href="git-clone.html">git-clone(1)</a>:</p>
741 </div>
742 <div class="listingblock">
743 <div class="content">
744 <pre>$ git clone backup.bundle &lt;new directory&gt;</pre>
745 </div>
746 </div>
747 <div class="paragraph">
748 <p>For the next example, assume you want to transfer the history from a
749 repository R1 on machine A to another repository R2 on machine B.
750 For whatever reason, direct connection between A and B is not allowed,
751 but we can move data from A to B via some mechanism (CD, email, etc.).
752 We want to update R2 with development made on the branch master in R1.</p>
753 </div>
754 <div class="paragraph">
755 <p>To bootstrap the process, you can first create a bundle that does not have
756 any prerequisites. You can use a tag to remember up to what commit you last
757 processed, in order to make it easy to later update the other repository
758 with an incremental bundle:</p>
759 </div>
760 <div class="listingblock">
761 <div class="content">
762 <pre>machineA$ cd R1
763 machineA$ git bundle create file.bundle master
764 machineA$ git tag -f lastR2bundle master</pre>
765 </div>
766 </div>
767 <div class="paragraph">
768 <p>Then you transfer file.bundle to the target machine B. Because this
769 bundle does not require any existing object to be extracted, you can
770 create a new repository on machine B by cloning from it:</p>
771 </div>
772 <div class="listingblock">
773 <div class="content">
774 <pre>machineB$ git clone -b master /home/me/tmp/file.bundle R2</pre>
775 </div>
776 </div>
777 <div class="paragraph">
778 <p>This will define a remote called "origin" in the resulting repository that
779 lets you fetch and pull from the bundle. The $GIT_DIR/config file in R2 will
780 have an entry like this:</p>
781 </div>
782 <div class="listingblock">
783 <div class="content">
784 <pre>[remote "origin"]
785 url = /home/me/tmp/file.bundle
786 fetch = refs/heads/*:refs/remotes/origin/*</pre>
787 </div>
788 </div>
789 <div class="paragraph">
790 <p>To update the resulting mine.git repository, you can fetch or pull after
791 replacing the bundle stored at /home/me/tmp/file.bundle with incremental
792 updates.</p>
793 </div>
794 <div class="paragraph">
795 <p>After working some more in the original repository, you can create an
796 incremental bundle to update the other repository:</p>
797 </div>
798 <div class="listingblock">
799 <div class="content">
800 <pre>machineA$ cd R1
801 machineA$ git bundle create file.bundle lastR2bundle..master
802 machineA$ git tag -f lastR2bundle master</pre>
803 </div>
804 </div>
805 <div class="paragraph">
806 <p>You then transfer the bundle to the other machine to replace
807 /home/me/tmp/file.bundle, and pull from it.</p>
808 </div>
809 <div class="listingblock">
810 <div class="content">
811 <pre>machineB$ cd R2
812 machineB$ git pull</pre>
813 </div>
814 </div>
815 <div class="paragraph">
816 <p>If you know up to what commit the intended recipient repository should
817 have the necessary objects, you can use that knowledge to specify the
818 prerequisites, giving a cut-off point to limit the revisions and objects that go
819 in the resulting bundle. The previous example used the lastR2bundle tag
820 for this purpose, but you can use any other options that you would give to
821 the <a href="git-log.html">git-log(1)</a> command. Here are more examples:</p>
822 </div>
823 <div class="paragraph">
824 <p>You can use a tag that is present in both:</p>
825 </div>
826 <div class="listingblock">
827 <div class="content">
828 <pre>$ git bundle create mybundle v1.0.0..master</pre>
829 </div>
830 </div>
831 <div class="paragraph">
832 <p>You can use a prerequisite based on time:</p>
833 </div>
834 <div class="listingblock">
835 <div class="content">
836 <pre>$ git bundle create mybundle --since=10.days master</pre>
837 </div>
838 </div>
839 <div class="paragraph">
840 <p>You can use the number of commits:</p>
841 </div>
842 <div class="listingblock">
843 <div class="content">
844 <pre>$ git bundle create mybundle -10 master</pre>
845 </div>
846 </div>
847 <div class="paragraph">
848 <p>You can run <code>git-bundle</code> <code>verify</code> to see if you can extract from a bundle
849 that was created with a prerequisite:</p>
850 </div>
851 <div class="listingblock">
852 <div class="content">
853 <pre>$ git bundle verify mybundle</pre>
854 </div>
855 </div>
856 <div class="paragraph">
857 <p>This will list what commits you must have in order to extract from the
858 bundle and will error out if you do not have them.</p>
859 </div>
860 <div class="paragraph">
861 <p>A bundle from a recipient repository&#8217;s point of view is just like a
862 regular repository which it fetches or pulls from. You can, for example, map
863 references when fetching:</p>
864 </div>
865 <div class="listingblock">
866 <div class="content">
867 <pre>$ git fetch mybundle master:localRef</pre>
868 </div>
869 </div>
870 <div class="paragraph">
871 <p>You can also see what references it offers:</p>
872 </div>
873 <div class="listingblock">
874 <div class="content">
875 <pre>$ git ls-remote mybundle</pre>
876 </div>
877 </div>
878 </div>
879 </div>
880 <div class="sect1">
881 <h2 id="_discussion">DISCUSSION</h2>
882 <div class="sectionbody">
883 <div class="paragraph">
884 <p>A naive way to make a full backup of a repository is to use something to
885 the effect of <code>cp</code> <code>-r</code> <em>&lt;repo&gt;</em> <em>&lt;destination&gt;</em>. This is discouraged since
886 the repository could be written to during the copy operation. In turn
887 some files at <em>&lt;destination&gt;</em> could be corrupted.</p>
888 </div>
889 <div class="paragraph">
890 <p>This is why it is recommended to use Git tooling for making repository
891 backups, either with this command or with e.g. <a href="git-clone.html">git-clone(1)</a>.
892 But keep in mind that these tools will not help you backup state other
893 than refs and commits. In other words they will not help you backup
894 contents of the index, working tree, the stash, per-repository
895 configuration, hooks, etc.</p>
896 </div>
897 <div class="paragraph">
898 <p>See also <a href="gitfaq.html">gitfaq(7)</a>, section "TRANSFERS" for a discussion of the
899 problems associated with file syncing across systems.</p>
900 </div>
901 </div>
902 </div>
903 <div class="sect1">
904 <h2 id="_file_format">FILE FORMAT</h2>
905 <div class="sectionbody">
906 <div class="paragraph">
907 <p>See <a href="gitformat-bundle.html">gitformat-bundle(5)</a>.</p>
908 </div>
909 </div>
910 </div>
911 <div class="sect1">
912 <h2 id="_git">GIT</h2>
913 <div class="sectionbody">
914 <div class="paragraph">
915 <p>Part of the <a href="git.html">git(1)</a> suite</p>
916 </div>
917 </div>
918 </div>
919 </div>
920 <div id="footer">
921 <div id="footer-text">
922 Last updated 2024-12-13 08:40:02 -0800
923 </div>
924 </div>
925 </body>
926 </html>