Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 1 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" |
| 2 | "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> |
| 3 | <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> |
| 4 | <head> |
| 5 | <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> |
Junio C Hamano | ba4b928 | 2008-07-06 05:20:31 | [diff] [blame] | 6 | <meta name="generator" content="AsciiDoc 8.2.5" /> |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 7 | <style type="text/css"> |
| 8 | /* Debug borders */ |
| 9 | p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 { |
| 10 | /* |
| 11 | border: 1px solid red; |
| 12 | */ |
| 13 | } |
| 14 | |
| 15 | body { |
| 16 | margin: 1em 5% 1em 5%; |
| 17 | } |
| 18 | |
Junio C Hamano | ba4b928 | 2008-07-06 05:20:31 | [diff] [blame] | 19 | a { |
| 20 | color: blue; |
| 21 | text-decoration: underline; |
| 22 | } |
| 23 | a:visited { |
| 24 | color: fuchsia; |
| 25 | } |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 26 | |
| 27 | em { |
| 28 | font-style: italic; |
| 29 | } |
| 30 | |
| 31 | strong { |
| 32 | font-weight: bold; |
| 33 | } |
| 34 | |
| 35 | tt { |
| 36 | color: navy; |
| 37 | } |
| 38 | |
| 39 | h1, h2, h3, h4, h5, h6 { |
| 40 | color: #527bbd; |
| 41 | font-family: sans-serif; |
| 42 | margin-top: 1.2em; |
| 43 | margin-bottom: 0.5em; |
| 44 | line-height: 1.3; |
| 45 | } |
| 46 | |
Junio C Hamano | ba4b928 | 2008-07-06 05:20:31 | [diff] [blame] | 47 | h1, h2, h3 { |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 48 | border-bottom: 2px solid silver; |
| 49 | } |
| 50 | h2 { |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 51 | padding-top: 0.5em; |
| 52 | } |
Junio C Hamano | ba4b928 | 2008-07-06 05:20:31 | [diff] [blame] | 53 | h3 { |
| 54 | float: left; |
| 55 | } |
| 56 | h3 + * { |
| 57 | clear: left; |
| 58 | } |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 59 | |
| 60 | div.sectionbody { |
| 61 | font-family: serif; |
| 62 | margin-left: 0; |
| 63 | } |
| 64 | |
| 65 | hr { |
| 66 | border: 1px solid silver; |
| 67 | } |
| 68 | |
| 69 | p { |
| 70 | margin-top: 0.5em; |
| 71 | margin-bottom: 0.5em; |
| 72 | } |
| 73 | |
| 74 | pre { |
| 75 | padding: 0; |
| 76 | margin: 0; |
| 77 | } |
| 78 | |
| 79 | span#author { |
| 80 | color: #527bbd; |
| 81 | font-family: sans-serif; |
| 82 | font-weight: bold; |
Junio C Hamano | ba4b928 | 2008-07-06 05:20:31 | [diff] [blame] | 83 | font-size: 1.1em; |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 84 | } |
| 85 | span#email { |
| 86 | } |
| 87 | span#revision { |
| 88 | font-family: sans-serif; |
| 89 | } |
| 90 | |
| 91 | div#footer { |
| 92 | font-family: sans-serif; |
| 93 | font-size: small; |
| 94 | border-top: 2px solid silver; |
| 95 | padding-top: 0.5em; |
| 96 | margin-top: 4.0em; |
| 97 | } |
| 98 | div#footer-text { |
| 99 | float: left; |
| 100 | padding-bottom: 0.5em; |
| 101 | } |
| 102 | div#footer-badges { |
| 103 | float: right; |
| 104 | padding-bottom: 0.5em; |
| 105 | } |
| 106 | |
| 107 | div#preamble, |
| 108 | div.tableblock, div.imageblock, div.exampleblock, div.verseblock, |
| 109 | div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock, |
| 110 | div.admonitionblock { |
| 111 | margin-right: 10%; |
| 112 | margin-top: 1.5em; |
| 113 | margin-bottom: 1.5em; |
| 114 | } |
| 115 | div.admonitionblock { |
| 116 | margin-top: 2.5em; |
| 117 | margin-bottom: 2.5em; |
| 118 | } |
| 119 | |
| 120 | div.content { /* Block element content. */ |
| 121 | padding: 0; |
| 122 | } |
| 123 | |
| 124 | /* Block element titles. */ |
| 125 | div.title, caption.title { |
| 126 | font-family: sans-serif; |
| 127 | font-weight: bold; |
| 128 | text-align: left; |
| 129 | margin-top: 1.0em; |
| 130 | margin-bottom: 0.5em; |
| 131 | } |
| 132 | div.title + * { |
| 133 | margin-top: 0; |
| 134 | } |
| 135 | |
| 136 | td div.title:first-child { |
| 137 | margin-top: 0.0em; |
| 138 | } |
| 139 | div.content div.title:first-child { |
| 140 | margin-top: 0.0em; |
| 141 | } |
| 142 | div.content + div.title { |
| 143 | margin-top: 0.0em; |
| 144 | } |
| 145 | |
| 146 | div.sidebarblock > div.content { |
| 147 | background: #ffffee; |
| 148 | border: 1px solid silver; |
| 149 | padding: 0.5em; |
| 150 | } |
| 151 | |
Junio C Hamano | ba4b928 | 2008-07-06 05:20:31 | [diff] [blame] | 152 | div.listingblock { |
| 153 | margin-right: 0%; |
| 154 | } |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 155 | div.listingblock > div.content { |
| 156 | border: 1px solid silver; |
| 157 | background: #f4f4f4; |
| 158 | padding: 0.5em; |
| 159 | } |
| 160 | |
| 161 | div.quoteblock > div.content { |
| 162 | padding-left: 2.0em; |
| 163 | } |
Junio C Hamano | ba4b928 | 2008-07-06 05:20:31 | [diff] [blame] | 164 | |
| 165 | div.attribution { |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 166 | text-align: right; |
| 167 | } |
Junio C Hamano | ba4b928 | 2008-07-06 05:20:31 | [diff] [blame] | 168 | div.verseblock + div.attribution { |
| 169 | text-align: left; |
| 170 | } |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 171 | |
| 172 | div.admonitionblock .icon { |
| 173 | vertical-align: top; |
| 174 | font-size: 1.1em; |
| 175 | font-weight: bold; |
| 176 | text-decoration: underline; |
| 177 | color: #527bbd; |
| 178 | padding-right: 0.5em; |
| 179 | } |
| 180 | div.admonitionblock td.content { |
| 181 | padding-left: 0.5em; |
| 182 | border-left: 2px solid silver; |
| 183 | } |
| 184 | |
| 185 | div.exampleblock > div.content { |
| 186 | border-left: 2px solid silver; |
| 187 | padding: 0.5em; |
| 188 | } |
| 189 | |
| 190 | div.verseblock div.content { |
| 191 | white-space: pre; |
| 192 | } |
| 193 | |
| 194 | div.imageblock div.content { padding-left: 0; } |
| 195 | div.imageblock img { border: 1px solid silver; } |
| 196 | span.image img { border-style: none; } |
| 197 | |
| 198 | dl { |
| 199 | margin-top: 0.8em; |
| 200 | margin-bottom: 0.8em; |
| 201 | } |
| 202 | dt { |
| 203 | margin-top: 0.5em; |
| 204 | margin-bottom: 0; |
| 205 | font-style: italic; |
| 206 | } |
| 207 | dd > *:first-child { |
| 208 | margin-top: 0; |
| 209 | } |
| 210 | |
| 211 | ul, ol { |
| 212 | list-style-position: outside; |
| 213 | } |
Junio C Hamano | ba4b928 | 2008-07-06 05:20:31 | [diff] [blame] | 214 | div.olist2 ol { |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 215 | list-style-type: lower-alpha; |
| 216 | } |
| 217 | |
| 218 | div.tableblock > table { |
Junio C Hamano | ba4b928 | 2008-07-06 05:20:31 | [diff] [blame] | 219 | border: 3px solid #527bbd; |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 220 | } |
| 221 | thead { |
| 222 | font-family: sans-serif; |
| 223 | font-weight: bold; |
| 224 | } |
| 225 | tfoot { |
| 226 | font-weight: bold; |
| 227 | } |
| 228 | |
| 229 | div.hlist { |
| 230 | margin-top: 0.8em; |
| 231 | margin-bottom: 0.8em; |
| 232 | } |
Junio C Hamano | ba4b928 | 2008-07-06 05:20:31 | [diff] [blame] | 233 | div.hlist td { |
| 234 | padding-bottom: 5px; |
| 235 | } |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 236 | td.hlist1 { |
| 237 | vertical-align: top; |
| 238 | font-style: italic; |
| 239 | padding-right: 0.8em; |
| 240 | } |
| 241 | td.hlist2 { |
| 242 | vertical-align: top; |
| 243 | } |
| 244 | |
| 245 | @media print { |
| 246 | div#footer-badges { display: none; } |
| 247 | } |
Junio C Hamano | ba4b928 | 2008-07-06 05:20:31 | [diff] [blame] | 248 | |
| 249 | div#toctitle { |
| 250 | color: #527bbd; |
| 251 | font-family: sans-serif; |
| 252 | font-size: 1.1em; |
| 253 | font-weight: bold; |
| 254 | margin-top: 1.0em; |
| 255 | margin-bottom: 0.1em; |
| 256 | } |
| 257 | |
| 258 | div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 { |
| 259 | margin-top: 0; |
| 260 | margin-bottom: 0; |
| 261 | } |
| 262 | div.toclevel2 { |
| 263 | margin-left: 2em; |
| 264 | font-size: 0.9em; |
| 265 | } |
| 266 | div.toclevel3 { |
| 267 | margin-left: 4em; |
| 268 | font-size: 0.9em; |
| 269 | } |
| 270 | div.toclevel4 { |
| 271 | margin-left: 6em; |
| 272 | font-size: 0.9em; |
| 273 | } |
| 274 | include1::./stylesheets/xhtml11-manpage.css[] |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 275 | /* Workarounds for IE6's broken and incomplete CSS2. */ |
| 276 | |
| 277 | div.sidebar-content { |
| 278 | background: #ffffee; |
| 279 | border: 1px solid silver; |
| 280 | padding: 0.5em; |
| 281 | } |
| 282 | div.sidebar-title, div.image-title { |
| 283 | font-family: sans-serif; |
| 284 | font-weight: bold; |
| 285 | margin-top: 0.0em; |
| 286 | margin-bottom: 0.5em; |
| 287 | } |
| 288 | |
| 289 | div.listingblock div.content { |
| 290 | border: 1px solid silver; |
| 291 | background: #f4f4f4; |
| 292 | padding: 0.5em; |
| 293 | } |
| 294 | |
| 295 | div.quoteblock-content { |
| 296 | padding-left: 2.0em; |
| 297 | } |
| 298 | |
| 299 | div.exampleblock-content { |
| 300 | border-left: 2px solid silver; |
| 301 | padding-left: 0.5em; |
| 302 | } |
Junio C Hamano | ba4b928 | 2008-07-06 05:20:31 | [diff] [blame] | 303 | |
| 304 | /* IE6 sets dynamically generated links as visited. */ |
| 305 | div#toc a:visited { color: blue; } |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 306 | </style> |
| 307 | <title>git-push(1)</title> |
| 308 | </head> |
| 309 | <body> |
| 310 | <div id="header"> |
| 311 | <h1> |
| 312 | git-push(1) Manual Page |
| 313 | </h1> |
| 314 | <h2>NAME</h2> |
| 315 | <div class="sectionbody"> |
| 316 | <p>git-push - |
Junio C Hamano | 0107892 | 2006-03-10 00:31:47 | [diff] [blame] | 317 | Update remote refs along with associated objects |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 318 | </p> |
| 319 | </div> |
| 320 | </div> |
| 321 | <h2>SYNOPSIS</h2> |
| 322 | <div class="sectionbody"> |
Junio C Hamano | a9b8d24 | 2007-05-19 04:51:55 | [diff] [blame] | 323 | <div class="verseblock"> |
Junio C Hamano | d6fff40 | 2009-09-14 09:40:50 | [diff] [blame] | 324 | <div class="content"><em>git push</em> [--all | --mirror | --tags] [-n | --dry-run] [--receive-pack=<git-receive-pack>] |
Junio C Hamano | a476efa | 2008-10-10 15:31:42 | [diff] [blame] | 325 | [--repo=<repository>] [-f | --force] [-v | --verbose] |
Junio C Hamano | 7f80ae8 | 2008-07-30 18:31:35 | [diff] [blame] | 326 | [<repository> <refspec>…]</div></div> |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 327 | </div> |
Junio C Hamano | ba4b928 | 2008-07-06 05:20:31 | [diff] [blame] | 328 | <h2 id="_description">DESCRIPTION</h2> |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 329 | <div class="sectionbody"> |
Junio C Hamano | ba4b928 | 2008-07-06 05:20:31 | [diff] [blame] | 330 | <div class="para"><p>Updates remote refs using local refs, while sending objects |
| 331 | necessary to complete the given refs.</p></div> |
| 332 | <div class="para"><p>You can make interesting things happen to a repository |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 333 | every time you push into it, by setting up <em>hooks</em> there. See |
Junio C Hamano | ba4b928 | 2008-07-06 05:20:31 | [diff] [blame] | 334 | documentation for <a href="git-receive-pack.html">git-receive-pack(1)</a>.</p></div> |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 335 | </div> |
Junio C Hamano | ea82cff | 2009-03-18 01:54:48 | [diff] [blame] | 336 | <h2 id="_options_a_id_options_a">OPTIONS<a id="OPTIONS"></a></h2> |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 337 | <div class="sectionbody"> |
Junio C Hamano | ba4b928 | 2008-07-06 05:20:31 | [diff] [blame] | 338 | <div class="vlist"><dl> |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 339 | <dt> |
| 340 | <repository> |
| 341 | </dt> |
| 342 | <dd> |
| 343 | <p> |
Junio C Hamano | 40f2f8d | 2006-02-07 08:04:39 | [diff] [blame] | 344 | The "remote" repository that is destination of a push |
Junio C Hamano | cc0cb31 | 2009-01-22 03:38:50 | [diff] [blame] | 345 | operation. This parameter can be either a URL |
| 346 | (see the section <a href="#URLS">GIT URLS</a> below) or the name |
| 347 | of a remote (see the section <a href="#REMOTES">REMOTES</a> below). |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 348 | </p> |
Junio C Hamano | 40f2f8d | 2006-02-07 08:04:39 | [diff] [blame] | 349 | </dd> |
| 350 | <dt> |
Junio C Hamano | 7f80ae8 | 2008-07-30 18:31:35 | [diff] [blame] | 351 | <refspec>… |
Junio C Hamano | 40f2f8d | 2006-02-07 08:04:39 | [diff] [blame] | 352 | </dt> |
| 353 | <dd> |
| 354 | <p> |
Junio C Hamano | 8b6e23b | 2009-02-01 06:36:08 | [diff] [blame] | 355 | The format of a <refspec> parameter is an optional plus |
| 356 | <tt>+</tt>, followed by the source ref <src>, followed |
| 357 | by a colon <tt>:</tt>, followed by the destination ref <dst>. |
| 358 | It is used to specify with what <src> object the <dst> ref |
| 359 | in the remote repository is to be updated. |
Junio C Hamano | 40f2f8d | 2006-02-07 08:04:39 | [diff] [blame] | 360 | </p> |
Junio C Hamano | 8b6e23b | 2009-02-01 06:36:08 | [diff] [blame] | 361 | <div class="para"><p>The <src> is often the name of the branch you would want to push, but |
| 362 | it can be any arbitrary "SHA-1 expression", such as <tt>master~4</tt> or |
| 363 | <tt>HEAD</tt> (see <a href="git-rev-parse.html">git-rev-parse(1)</a>).</p></div> |
| 364 | <div class="para"><p>The <dst> tells which ref on the remote side is updated with this |
| 365 | push. Arbitrary expressions cannot be used here, an actual ref must |
| 366 | be named. If <tt>:</tt><dst> is omitted, the same ref as <src> will be |
| 367 | updated.</p></div> |
Junio C Hamano | d533bdb | 2009-02-25 09:56:58 | [diff] [blame] | 368 | <div class="para"><p>The object referenced by <src> is used to update the <dst> reference |
| 369 | on the remote side, but by default this is only allowed if the |
| 370 | update can fast forward <dst>. By having the optional leading <tt>+</tt>, |
| 371 | you can tell git to update the <dst> ref even when the update is not a |
| 372 | fast forward. This does <strong>not</strong> attempt to merge <src> into <dst>. See |
| 373 | EXAMPLES below for details.</p></div> |
Junio C Hamano | ba4b928 | 2008-07-06 05:20:31 | [diff] [blame] | 374 | <div class="para"><p><tt>tag <tag></tt> means the same as <tt>refs/tags/<tag>:refs/tags/<tag></tt>.</p></div> |
Junio C Hamano | ba4b928 | 2008-07-06 05:20:31 | [diff] [blame] | 375 | <div class="para"><p>Pushing an empty <src> allows you to delete the <dst> ref from |
| 376 | the remote repository.</p></div> |
Junio C Hamano | d533bdb | 2009-02-25 09:56:58 | [diff] [blame] | 377 | <div class="para"><p>The special refspec <tt>:</tt> (or <tt>+:</tt> to allow non-fast forward updates) |
Junio C Hamano | cc0cb31 | 2009-01-22 03:38:50 | [diff] [blame] | 378 | directs git to push "matching" branches: for every branch that exists on |
| 379 | the local side, the remote side is updated if a branch of the same name |
Junio C Hamano | b713ff1 | 2008-05-24 01:12:30 | [diff] [blame] | 380 | already exists on the remote side. This is the default operation mode |
| 381 | if no explicit refspec is found (that is neither on the command line |
Junio C Hamano | ba4b928 | 2008-07-06 05:20:31 | [diff] [blame] | 382 | nor in any Push line of the corresponding remotes file---see below).</p></div> |
Junio C Hamano | 40f2f8d | 2006-02-07 08:04:39 | [diff] [blame] | 383 | </dd> |
| 384 | <dt> |
| 385 | --all |
| 386 | </dt> |
| 387 | <dd> |
| 388 | <p> |
| 389 | Instead of naming each ref to push, specifies that all |
Junio C Hamano | d2d9ae1 | 2007-09-19 02:27:57 | [diff] [blame] | 390 | refs under <tt>$GIT_DIR/refs/heads/</tt> be pushed. |
Junio C Hamano | 40f2f8d | 2006-02-07 08:04:39 | [diff] [blame] | 391 | </p> |
| 392 | </dd> |
| 393 | <dt> |
Junio C Hamano | 9d2bbb7 | 2007-11-25 04:56:07 | [diff] [blame] | 394 | --mirror |
| 395 | </dt> |
| 396 | <dd> |
| 397 | <p> |
| 398 | Instead of naming each ref to push, specifies that all |
Junio C Hamano | a351d14 | 2008-06-21 09:40:40 | [diff] [blame] | 399 | refs under <tt>$GIT_DIR/refs/</tt> (which includes but is not |
| 400 | limited to <tt>refs/heads/</tt>, <tt>refs/remotes/</tt>, and <tt>refs/tags/</tt>) |
Junio C Hamano | 9d2bbb7 | 2007-11-25 04:56:07 | [diff] [blame] | 401 | be mirrored to the remote repository. Newly created local |
| 402 | refs will be pushed to the remote end, locally updated refs |
| 403 | will be force updated on the remote end, and deleted refs |
Junio C Hamano | 47d68a5 | 2008-05-06 06:35:40 | [diff] [blame] | 404 | will be removed from the remote end. This is the default |
| 405 | if the configuration option <tt>remote.<remote>.mirror</tt> is |
| 406 | set. |
Junio C Hamano | 9d2bbb7 | 2007-11-25 04:56:07 | [diff] [blame] | 407 | </p> |
| 408 | </dd> |
| 409 | <dt> |
Junio C Hamano | d6fff40 | 2009-09-14 09:40:50 | [diff] [blame] | 410 | -n |
| 411 | </dt> |
| 412 | <dt> |
Junio C Hamano | 764a667 | 2007-10-23 01:23:31 | [diff] [blame] | 413 | --dry-run |
| 414 | </dt> |
| 415 | <dd> |
| 416 | <p> |
| 417 | Do everything except actually send the updates. |
| 418 | </p> |
| 419 | </dd> |
| 420 | <dt> |
Junio C Hamano | 48bc1ce | 2009-07-09 16:49:19 | [diff] [blame] | 421 | --porcelain |
| 422 | </dt> |
| 423 | <dd> |
| 424 | <p> |
| 425 | Produce machine-readable output. The output status line for each ref |
| 426 | will be tab-separated and sent to stdout instead of stderr. The full |
| 427 | symbolic names of the refs will be given. |
| 428 | </p> |
| 429 | </dd> |
| 430 | <dt> |
Junio C Hamano | 40f2f8d | 2006-02-07 08:04:39 | [diff] [blame] | 431 | --tags |
| 432 | </dt> |
| 433 | <dd> |
| 434 | <p> |
| 435 | All refs under <tt>$GIT_DIR/refs/tags</tt> are pushed, in |
| 436 | addition to refspecs explicitly listed on the command |
| 437 | line. |
| 438 | </p> |
| 439 | </dd> |
| 440 | <dt> |
Junio C Hamano | 4ad294b | 2007-01-20 02:22:50 | [diff] [blame] | 441 | --receive-pack=<git-receive-pack> |
Junio C Hamano | 1ce39ab | 2007-01-16 22:05:10 | [diff] [blame] | 442 | </dt> |
Junio C Hamano | 1c95827 | 2009-01-12 18:04:21 | [diff] [blame] | 443 | <dt> |
| 444 | --exec=<git-receive-pack> |
| 445 | </dt> |
Junio C Hamano | 1ce39ab | 2007-01-16 22:05:10 | [diff] [blame] | 446 | <dd> |
| 447 | <p> |
Junio C Hamano | ba4b928 | 2008-07-06 05:20:31 | [diff] [blame] | 448 | Path to the <em>git-receive-pack</em> program on the remote |
Junio C Hamano | 1ce39ab | 2007-01-16 22:05:10 | [diff] [blame] | 449 | end. Sometimes useful when pushing to a remote |
| 450 | repository over ssh, and you do not have the program in |
| 451 | a directory on the default $PATH. |
| 452 | </p> |
| 453 | </dd> |
| 454 | <dt> |
Junio C Hamano | eb41599 | 2008-06-08 22:49:47 | [diff] [blame] | 455 | -f |
| 456 | </dt> |
| 457 | <dt> |
| 458 | --force |
Junio C Hamano | 40f2f8d | 2006-02-07 08:04:39 | [diff] [blame] | 459 | </dt> |
| 460 | <dd> |
| 461 | <p> |
| 462 | Usually, the command refuses to update a remote ref that is |
Junio C Hamano | 4cd1c0e | 2007-08-06 04:39:14 | [diff] [blame] | 463 | not an ancestor of the local ref used to overwrite it. |
Junio C Hamano | 40f2f8d | 2006-02-07 08:04:39 | [diff] [blame] | 464 | This flag disables the check. This can cause the |
| 465 | remote repository to lose commits; use it with care. |
| 466 | </p> |
| 467 | </dd> |
Junio C Hamano | 1ce39ab | 2007-01-16 22:05:10 | [diff] [blame] | 468 | <dt> |
Junio C Hamano | a476efa | 2008-10-10 15:31:42 | [diff] [blame] | 469 | --repo=<repository> |
Junio C Hamano | 1ce39ab | 2007-01-16 22:05:10 | [diff] [blame] | 470 | </dt> |
| 471 | <dd> |
| 472 | <p> |
Junio C Hamano | a476efa | 2008-10-10 15:31:42 | [diff] [blame] | 473 | This option is only relevant if no <repository> argument is |
| 474 | passed in the invocation. In this case, <em>git-push</em> derives the |
| 475 | remote name from the current branch: If it tracks a remote |
| 476 | branch, then that remote repository is pushed to. Otherwise, |
| 477 | the name "origin" is used. For this latter case, this option |
| 478 | can be used to override the name "origin". In other words, |
| 479 | the difference between these two commands |
Junio C Hamano | 1ce39ab | 2007-01-16 22:05:10 | [diff] [blame] | 480 | </p> |
Junio C Hamano | a476efa | 2008-10-10 15:31:42 | [diff] [blame] | 481 | <div class="listingblock"> |
| 482 | <div class="content"> |
| 483 | <pre><tt>git push public #1 |
| 484 | git push --repo=public #2</tt></pre> |
| 485 | </div></div> |
| 486 | <div class="para"><p>is that #1 always pushes to "public" whereas #2 pushes to "public" |
| 487 | only if the current branch does not track a remote branch. This is |
| 488 | useful if you write an alias or script around <em>git-push</em>.</p></div> |
Junio C Hamano | 1ce39ab | 2007-01-16 22:05:10 | [diff] [blame] | 489 | </dd> |
| 490 | <dt> |
Junio C Hamano | eb41599 | 2008-06-08 22:49:47 | [diff] [blame] | 491 | --thin |
| 492 | </dt> |
| 493 | <dt> |
| 494 | --no-thin |
Junio C Hamano | 1ce39ab | 2007-01-16 22:05:10 | [diff] [blame] | 495 | </dt> |
| 496 | <dd> |
| 497 | <p> |
Junio C Hamano | ba4b928 | 2008-07-06 05:20:31 | [diff] [blame] | 498 | These options are passed to <em>git-send-pack</em>. Thin |
Junio C Hamano | 1ce39ab | 2007-01-16 22:05:10 | [diff] [blame] | 499 | transfer spends extra cycles to minimize the number of |
| 500 | objects to be sent and meant to be used on slower connection. |
| 501 | </p> |
| 502 | </dd> |
| 503 | <dt> |
Junio C Hamano | eb41599 | 2008-06-08 22:49:47 | [diff] [blame] | 504 | -v |
| 505 | </dt> |
| 506 | <dt> |
| 507 | --verbose |
Junio C Hamano | 1ce39ab | 2007-01-16 22:05:10 | [diff] [blame] | 508 | </dt> |
| 509 | <dd> |
| 510 | <p> |
| 511 | Run verbosely. |
| 512 | </p> |
| 513 | </dd> |
Junio C Hamano | ba4b928 | 2008-07-06 05:20:31 | [diff] [blame] | 514 | </dl></div> |
Junio C Hamano | 40f2f8d | 2006-02-07 08:04:39 | [diff] [blame] | 515 | </div> |
Junio C Hamano | ba4b928 | 2008-07-06 05:20:31 | [diff] [blame] | 516 | <h2 id="_git_urls_a_id_urls_a">GIT URLS<a id="URLS"></a></h2> |
Junio C Hamano | 40f2f8d | 2006-02-07 08:04:39 | [diff] [blame] | 517 | <div class="sectionbody"> |
Junio C Hamano | ba4b928 | 2008-07-06 05:20:31 | [diff] [blame] | 518 | <div class="para"><p>One of the following notations can be used |
| 519 | to name the remote repository:</p></div> |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 520 | <div class="exampleblock"> |
| 521 | <div class="exampleblock-content"> |
Junio C Hamano | ba4b928 | 2008-07-06 05:20:31 | [diff] [blame] | 522 | <div class="ilist"><ul> |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 523 | <li> |
| 524 | <p> |
| 525 | rsync://host.xz/path/to/repo.git/ |
| 526 | </p> |
| 527 | </li> |
| 528 | <li> |
| 529 | <p> |
Junio C Hamano | a3bb6eb | 2009-02-05 01:26:33 | [diff] [blame] | 530 | http://host.xz[:port]/path/to/repo.git/ |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 531 | </p> |
| 532 | </li> |
| 533 | <li> |
| 534 | <p> |
Junio C Hamano | a3bb6eb | 2009-02-05 01:26:33 | [diff] [blame] | 535 | https://host.xz[:port]/path/to/repo.git/ |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 536 | </p> |
| 537 | </li> |
| 538 | <li> |
| 539 | <p> |
Junio C Hamano | a3bb6eb | 2009-02-05 01:26:33 | [diff] [blame] | 540 | git://host.xz[:port]/path/to/repo.git/ |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 541 | </p> |
| 542 | </li> |
| 543 | <li> |
| 544 | <p> |
Junio C Hamano | a3bb6eb | 2009-02-05 01:26:33 | [diff] [blame] | 545 | git://host.xz[:port]/~user/path/to/repo.git/ |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 546 | </p> |
| 547 | </li> |
| 548 | <li> |
| 549 | <p> |
Junio C Hamano | dbb6459 | 2007-09-01 11:17:39 | [diff] [blame] | 550 | ssh://[user@]host.xz[:port]/path/to/repo.git/ |
| 551 | </p> |
| 552 | </li> |
| 553 | <li> |
| 554 | <p> |
Junio C Hamano | 7ccb9fd | 2006-07-15 01:38:40 | [diff] [blame] | 555 | ssh://[user@]host.xz/path/to/repo.git/ |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 556 | </p> |
| 557 | </li> |
| 558 | <li> |
| 559 | <p> |
Junio C Hamano | 7ccb9fd | 2006-07-15 01:38:40 | [diff] [blame] | 560 | ssh://[user@]host.xz/~user/path/to/repo.git/ |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 561 | </p> |
| 562 | </li> |
| 563 | <li> |
| 564 | <p> |
Junio C Hamano | 7ccb9fd | 2006-07-15 01:38:40 | [diff] [blame] | 565 | ssh://[user@]host.xz/~/path/to/repo.git |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 566 | </p> |
| 567 | </li> |
Junio C Hamano | ba4b928 | 2008-07-06 05:20:31 | [diff] [blame] | 568 | </ul></div> |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 569 | </div></div> |
Junio C Hamano | ba4b928 | 2008-07-06 05:20:31 | [diff] [blame] | 570 | <div class="para"><p>SSH is the default transport protocol over the network. You can |
Junio C Hamano | b1d6e88 | 2007-08-11 08:30:16 | [diff] [blame] | 571 | optionally specify which user to log-in as, and an alternate, |
| 572 | scp-like syntax is also supported. Both syntaxes support |
Junio C Hamano | dbb6459 | 2007-09-01 11:17:39 | [diff] [blame] | 573 | username expansion, as does the native git protocol, but |
| 574 | only the former supports port specification. The following |
Junio C Hamano | ba4b928 | 2008-07-06 05:20:31 | [diff] [blame] | 575 | three are identical to the last three above, respectively:</p></div> |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 576 | <div class="exampleblock"> |
| 577 | <div class="exampleblock-content"> |
Junio C Hamano | ba4b928 | 2008-07-06 05:20:31 | [diff] [blame] | 578 | <div class="ilist"><ul> |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 579 | <li> |
| 580 | <p> |
Junio C Hamano | 7ccb9fd | 2006-07-15 01:38:40 | [diff] [blame] | 581 | [user@]host.xz:/path/to/repo.git/ |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 582 | </p> |
| 583 | </li> |
| 584 | <li> |
| 585 | <p> |
Junio C Hamano | 7ccb9fd | 2006-07-15 01:38:40 | [diff] [blame] | 586 | [user@]host.xz:~user/path/to/repo.git/ |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 587 | </p> |
| 588 | </li> |
| 589 | <li> |
| 590 | <p> |
Junio C Hamano | 7ccb9fd | 2006-07-15 01:38:40 | [diff] [blame] | 591 | [user@]host.xz:path/to/repo.git |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 592 | </p> |
| 593 | </li> |
Junio C Hamano | ba4b928 | 2008-07-06 05:20:31 | [diff] [blame] | 594 | </ul></div> |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 595 | </div></div> |
Junio C Hamano | ba4b928 | 2008-07-06 05:20:31 | [diff] [blame] | 596 | <div class="para"><p>To sync with a local directory, you can use:</p></div> |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 597 | <div class="exampleblock"> |
| 598 | <div class="exampleblock-content"> |
Junio C Hamano | ba4b928 | 2008-07-06 05:20:31 | [diff] [blame] | 599 | <div class="ilist"><ul> |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 600 | <li> |
| 601 | <p> |
| 602 | /path/to/repo.git/ |
| 603 | </p> |
| 604 | </li> |
Junio C Hamano | b1d6e88 | 2007-08-11 08:30:16 | [diff] [blame] | 605 | <li> |
| 606 | <p> |
| 607 | file:///path/to/repo.git/ |
| 608 | </p> |
| 609 | </li> |
Junio C Hamano | ba4b928 | 2008-07-06 05:20:31 | [diff] [blame] | 610 | </ul></div> |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 611 | </div></div> |
Junio C Hamano | ba4b928 | 2008-07-06 05:20:31 | [diff] [blame] | 612 | <div class="para"><p>They are mostly equivalent, except when cloning. See |
| 613 | <a href="git-clone.html">git-clone(1)</a> for details.</p></div> |
| 614 | <div class="para"><p>If there are a large number of similarly-named remote repositories and |
Junio C Hamano | 24bc09a | 2008-02-28 00:27:44 | [diff] [blame] | 615 | you want to use a different format for them (such that the URLs you |
| 616 | use will be rewritten into URLs that work), you can create a |
Junio C Hamano | ba4b928 | 2008-07-06 05:20:31 | [diff] [blame] | 617 | configuration section of the form:</p></div> |
Junio C Hamano | 24bc09a | 2008-02-28 00:27:44 | [diff] [blame] | 618 | <div class="listingblock"> |
| 619 | <div class="content"> |
| 620 | <pre><tt> [url "<actual url base>"] |
| 621 | insteadOf = <other url base></tt></pre> |
| 622 | </div></div> |
Junio C Hamano | ba4b928 | 2008-07-06 05:20:31 | [diff] [blame] | 623 | <div class="para"><p>For example, with this:</p></div> |
Junio C Hamano | 24bc09a | 2008-02-28 00:27:44 | [diff] [blame] | 624 | <div class="listingblock"> |
| 625 | <div class="content"> |
| 626 | <pre><tt> [url "git://git.host.xz/"] |
| 627 | insteadOf = host.xz:/path/to/ |
| 628 | insteadOf = work:</tt></pre> |
| 629 | </div></div> |
Junio C Hamano | ba4b928 | 2008-07-06 05:20:31 | [diff] [blame] | 630 | <div class="para"><p>a URL like "work:repo.git" or like "host.xz:/path/to/repo.git" will be |
| 631 | rewritten in any context that takes a URL to be "git://git.host.xz/repo.git".</p></div> |
Junio C Hamano | 7df6dcf | 2009-09-13 09:51:17 | [diff] [blame] | 632 | <div class="para"><p>If you want to rewrite URLs for push only, you can create a |
| 633 | configuration section of the form:</p></div> |
| 634 | <div class="listingblock"> |
| 635 | <div class="content"> |
| 636 | <pre><tt> [url "<actual url base>"] |
| 637 | pushInsteadOf = <other url base></tt></pre> |
| 638 | </div></div> |
| 639 | <div class="para"><p>For example, with this:</p></div> |
| 640 | <div class="listingblock"> |
| 641 | <div class="content"> |
| 642 | <pre><tt> [url "ssh://example.org/"] |
| 643 | pushInsteadOf = git://example.org/</tt></pre> |
| 644 | </div></div> |
| 645 | <div class="para"><p>a URL like "git://example.org/path/to/repo.git" will be rewritten to |
| 646 | "ssh://example.org/path/to/repo.git" for pushes, but pulls will still |
| 647 | use the original URL.</p></div> |
Junio C Hamano | 40f2f8d | 2006-02-07 08:04:39 | [diff] [blame] | 648 | </div> |
Junio C Hamano | ba4b928 | 2008-07-06 05:20:31 | [diff] [blame] | 649 | <h2 id="_remotes_a_id_remotes_a">REMOTES<a id="REMOTES"></a></h2> |
Junio C Hamano | 40f2f8d | 2006-02-07 08:04:39 | [diff] [blame] | 650 | <div class="sectionbody"> |
Junio C Hamano | ba4b928 | 2008-07-06 05:20:31 | [diff] [blame] | 651 | <div class="para"><p>The name of one of the following can be used instead |
| 652 | of a URL as <tt><repository></tt> argument:</p></div> |
| 653 | <div class="ilist"><ul> |
Junio C Hamano | 054ea08 | 2008-06-01 08:26:34 | [diff] [blame] | 654 | <li> |
| 655 | <p> |
| 656 | a remote in the git configuration file: <tt>$GIT_DIR/config</tt>, |
| 657 | </p> |
| 658 | </li> |
| 659 | <li> |
| 660 | <p> |
| 661 | a file in the <tt>$GIT_DIR/remotes</tt> directory, or |
| 662 | </p> |
| 663 | </li> |
| 664 | <li> |
| 665 | <p> |
| 666 | a file in the <tt>$GIT_DIR/branches</tt> directory. |
| 667 | </p> |
| 668 | </li> |
Junio C Hamano | ba4b928 | 2008-07-06 05:20:31 | [diff] [blame] | 669 | </ul></div> |
| 670 | <div class="para"><p>All of these also allow you to omit the refspec from the command line |
| 671 | because they each contain a refspec which git will use by default.</p></div> |
| 672 | <h3 id="_named_remote_in_configuration_file">Named remote in configuration file</h3><div style="clear:left"></div> |
| 673 | <div class="para"><p>You can choose to provide the name of a remote which you had previously |
Junio C Hamano | 054ea08 | 2008-06-01 08:26:34 | [diff] [blame] | 674 | configured using <a href="git-remote.html">git-remote(1)</a>, <a href="git-config.html">git-config(1)</a> |
| 675 | or even by a manual edit to the <tt>$GIT_DIR/config</tt> file. The URL of |
| 676 | this remote will be used to access the repository. The refspec |
| 677 | of this remote will be used by default when you do |
| 678 | not provide a refspec on the command line. The entry in the |
Junio C Hamano | ba4b928 | 2008-07-06 05:20:31 | [diff] [blame] | 679 | config file would appear like this:</p></div> |
Junio C Hamano | 054ea08 | 2008-06-01 08:26:34 | [diff] [blame] | 680 | <div class="listingblock"> |
| 681 | <div class="content"> |
| 682 | <pre><tt> [remote "<name>"] |
| 683 | url = <url> |
Junio C Hamano | 0e88f3e | 2009-06-21 08:03:25 | [diff] [blame] | 684 | pushurl = <pushurl> |
Junio C Hamano | 054ea08 | 2008-06-01 08:26:34 | [diff] [blame] | 685 | push = <refspec> |
| 686 | fetch = <refspec></tt></pre> |
| 687 | </div></div> |
Junio C Hamano | 0e88f3e | 2009-06-21 08:03:25 | [diff] [blame] | 688 | <div class="para"><p>The <tt><pushurl></tt> is used for pushes only. It is optional and defaults |
| 689 | to <tt><url></tt>.</p></div> |
Junio C Hamano | ba4b928 | 2008-07-06 05:20:31 | [diff] [blame] | 690 | <h3 id="_named_file_in_tt_git_dir_remotes_tt">Named file in <tt>$GIT_DIR/remotes</tt></h3><div style="clear:left"></div> |
| 691 | <div class="para"><p>You can choose to provide the name of a |
Junio C Hamano | 054ea08 | 2008-06-01 08:26:34 | [diff] [blame] | 692 | file in <tt>$GIT_DIR/remotes</tt>. The URL |
| 693 | in this file will be used to access the repository. The refspec |
| 694 | in this file will be used as default when you do not |
| 695 | provide a refspec on the command line. This file should have the |
Junio C Hamano | ba4b928 | 2008-07-06 05:20:31 | [diff] [blame] | 696 | following format:</p></div> |
Junio C Hamano | 1caaf47 | 2006-12-31 08:29:35 | [diff] [blame] | 697 | <div class="listingblock"> |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 698 | <div class="content"> |
Junio C Hamano | d3361ad | 2007-01-01 03:20:24 | [diff] [blame] | 699 | <pre><tt> URL: one of the above URL format |
| 700 | Push: <refspec> |
| 701 | Pull: <refspec> |
| 702 | </tt></pre> |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 703 | </div></div> |
Junio C Hamano | ba4b928 | 2008-07-06 05:20:31 | [diff] [blame] | 704 | <div class="para"><p><tt>Push:</tt> lines are used by <em>git-push</em> and |
| 705 | <tt>Pull:</tt> lines are used by <em>git-pull</em> and <em>git-fetch</em>. |
Junio C Hamano | 054ea08 | 2008-06-01 08:26:34 | [diff] [blame] | 706 | Multiple <tt>Push:</tt> and <tt>Pull:</tt> lines may |
Junio C Hamano | ba4b928 | 2008-07-06 05:20:31 | [diff] [blame] | 707 | be specified for additional branch mappings.</p></div> |
| 708 | <h3 id="_named_file_in_tt_git_dir_branches_tt">Named file in <tt>$GIT_DIR/branches</tt></h3><div style="clear:left"></div> |
| 709 | <div class="para"><p>You can choose to provide the name of a |
Junio C Hamano | 054ea08 | 2008-06-01 08:26:34 | [diff] [blame] | 710 | file in <tt>$GIT_DIR/branches</tt>. |
| 711 | The URL in this file will be used to access the repository. |
Junio C Hamano | ba4b928 | 2008-07-06 05:20:31 | [diff] [blame] | 712 | This file should have the following format:</p></div> |
Junio C Hamano | 1caaf47 | 2006-12-31 08:29:35 | [diff] [blame] | 713 | <div class="listingblock"> |
Junio C Hamano | 249572f | 2006-10-24 05:44:08 | [diff] [blame] | 714 | <div class="content"> |
Junio C Hamano | 054ea08 | 2008-06-01 08:26:34 | [diff] [blame] | 715 | <pre><tt> <url>#<head></tt></pre> |
Junio C Hamano | 249572f | 2006-10-24 05:44:08 | [diff] [blame] | 716 | </div></div> |
Junio C Hamano | 2836349 | 2008-11-14 08:26:31 | [diff] [blame] | 717 | <div class="para"><p><tt><url></tt> is required; <tt>#<head></tt> is optional.</p></div> |
| 718 | <div class="para"><p>Depending on the operation, git will use one of the following |
| 719 | refspecs, if you don't provide one on the command line. |
| 720 | <tt><branch></tt> is the name of this file in <tt>$GIT_DIR/branches</tt> and |
| 721 | <tt><head></tt> defaults to <tt>master</tt>.</p></div> |
| 722 | <div class="para"><p>git fetch uses:</p></div> |
Junio C Hamano | 1caaf47 | 2006-12-31 08:29:35 | [diff] [blame] | 723 | <div class="listingblock"> |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 724 | <div class="content"> |
Junio C Hamano | 2836349 | 2008-11-14 08:26:31 | [diff] [blame] | 725 | <pre><tt> refs/heads/<head>:refs/heads/<branch></tt></pre> |
| 726 | </div></div> |
| 727 | <div class="para"><p>git push uses:</p></div> |
| 728 | <div class="listingblock"> |
| 729 | <div class="content"> |
| 730 | <pre><tt> HEAD:refs/heads/<head></tt></pre> |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 731 | </div></div> |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 732 | </div> |
Junio C Hamano | ba4b928 | 2008-07-06 05:20:31 | [diff] [blame] | 733 | <h2 id="_output">OUTPUT</h2> |
Junio C Hamano | 6d559fc | 2008-02-20 10:44:26 | [diff] [blame] | 734 | <div class="sectionbody"> |
Junio C Hamano | ba4b928 | 2008-07-06 05:20:31 | [diff] [blame] | 735 | <div class="para"><p>The output of "git push" depends on the transport method used; this |
Junio C Hamano | 6d559fc | 2008-02-20 10:44:26 | [diff] [blame] | 736 | section describes the output when pushing over the git protocol (either |
Junio C Hamano | ba4b928 | 2008-07-06 05:20:31 | [diff] [blame] | 737 | locally or via ssh).</p></div> |
| 738 | <div class="para"><p>The status of the push is output in tabular form, with each line |
| 739 | representing the status of a single ref. Each line is of the form:</p></div> |
Junio C Hamano | 6d559fc | 2008-02-20 10:44:26 | [diff] [blame] | 740 | <div class="listingblock"> |
| 741 | <div class="content"> |
| 742 | <pre><tt> <flag> <summary> <from> -> <to> (<reason>)</tt></pre> |
| 743 | </div></div> |
Junio C Hamano | 48bc1ce | 2009-07-09 16:49:19 | [diff] [blame] | 744 | <div class="para"><p>If --porcelain is used, then each line of the output is of the form:</p></div> |
| 745 | <div class="listingblock"> |
| 746 | <div class="content"> |
| 747 | <pre><tt> <flag> \t <from>:<to> \t <summary> (<reason>)</tt></pre> |
| 748 | </div></div> |
Junio C Hamano | ba4b928 | 2008-07-06 05:20:31 | [diff] [blame] | 749 | <div class="vlist"><dl> |
Junio C Hamano | 6d559fc | 2008-02-20 10:44:26 | [diff] [blame] | 750 | <dt> |
| 751 | flag |
| 752 | </dt> |
| 753 | <dd> |
| 754 | <p> |
| 755 | A single character indicating the status of the ref. This is |
| 756 | blank for a successfully pushed ref, <tt>!</tt> for a ref that was |
| 757 | rejected or failed to push, and <em>=</em> for a ref that was up to |
| 758 | date and did not need pushing (note that the status of up to |
| 759 | date refs is shown only when <tt>git push</tt> is running verbosely). |
| 760 | </p> |
| 761 | </dd> |
| 762 | <dt> |
| 763 | summary |
| 764 | </dt> |
| 765 | <dd> |
| 766 | <p> |
| 767 | For a successfully pushed ref, the summary shows the old and new |
| 768 | values of the ref in a form suitable for using as an argument to |
| 769 | <tt>git log</tt> (this is <tt><old>..<new></tt> in most cases, and |
| 770 | <tt><old>…<new></tt> for forced non-fast forward updates). For a |
| 771 | failed update, more details are given for the failure. |
| 772 | The string <tt>rejected</tt> indicates that git did not try to send the |
| 773 | ref at all (typically because it is not a fast forward). The |
| 774 | string <tt>remote rejected</tt> indicates that the remote end refused |
| 775 | the update; this rejection is typically caused by a hook on the |
| 776 | remote side. The string <tt>remote failure</tt> indicates that the |
| 777 | remote end did not report the successful update of the ref |
| 778 | (perhaps because of a temporary error on the remote side, a |
| 779 | break in the network connection, or other transient error). |
| 780 | </p> |
| 781 | </dd> |
| 782 | <dt> |
| 783 | from |
| 784 | </dt> |
| 785 | <dd> |
| 786 | <p> |
| 787 | The name of the local ref being pushed, minus its |
| 788 | <tt>refs/<type>/</tt> prefix. In the case of deletion, the |
| 789 | name of the local ref is omitted. |
| 790 | </p> |
| 791 | </dd> |
| 792 | <dt> |
| 793 | to |
| 794 | </dt> |
| 795 | <dd> |
| 796 | <p> |
| 797 | The name of the remote ref being updated, minus its |
| 798 | <tt>refs/<type>/</tt> prefix. |
| 799 | </p> |
| 800 | </dd> |
| 801 | <dt> |
| 802 | reason |
| 803 | </dt> |
| 804 | <dd> |
| 805 | <p> |
| 806 | A human-readable explanation. In the case of successfully pushed |
| 807 | refs, no explanation is needed. For a failed ref, the reason for |
| 808 | failure is described. |
| 809 | </p> |
| 810 | </dd> |
Junio C Hamano | ba4b928 | 2008-07-06 05:20:31 | [diff] [blame] | 811 | </dl></div> |
Junio C Hamano | 6d559fc | 2008-02-20 10:44:26 | [diff] [blame] | 812 | </div> |
Junio C Hamano | 27a128b | 2009-08-13 01:23:00 | [diff] [blame] | 813 | <h2 id="_note_about_fast_forwards">Note about fast-forwards</h2> |
| 814 | <div class="sectionbody"> |
| 815 | <div class="para"><p>When an update changes a branch (or more in general, a ref) that used to |
| 816 | point at commit A to point at another commit B, it is called a |
| 817 | fast-forward update if and only if B is a descendant of A.</p></div> |
| 818 | <div class="para"><p>In a fast-forward update from A to B, the set of commits that the original |
| 819 | commit A built on top of is a subset of the commits the new commit B |
| 820 | builds on top of. Hence, it does not lose any history.</p></div> |
| 821 | <div class="para"><p>In contrast, a non-fast-forward update will lose history. For example, |
| 822 | suppose you and somebody else started at the same commit X, and you built |
| 823 | a history leading to commit B while the other person built a history |
| 824 | leading to commit A. The history looks like this:</p></div> |
| 825 | <div class="listingblock"> |
| 826 | <div class="content"> |
| 827 | <pre><tt> |
| 828 | B |
| 829 | / |
| 830 | ---X---A |
| 831 | </tt></pre> |
| 832 | </div></div> |
| 833 | <div class="para"><p>Further suppose that the other person already pushed changes leading to A |
| 834 | back to the original repository you two obtained the original commit X.</p></div> |
| 835 | <div class="para"><p>The push done by the other person updated the branch that used to point at |
| 836 | commit X to point at commit A. It is a fast-forward.</p></div> |
| 837 | <div class="para"><p>But if you try to push, you will attempt to update the branch (that |
| 838 | now points at A) with commit B. This does _not_ fast-forward. If you did |
| 839 | so, the changes introduced by commit A will be lost, because everybody |
| 840 | will now start building on top of B.</p></div> |
| 841 | <div class="para"><p>The command by default does not allow an update that is not a fast-forward |
| 842 | to prevent such loss of history.</p></div> |
| 843 | <div class="para"><p>If you do not want to lose your work (history from X to B) nor the work by |
| 844 | the other person (history from X to A), you would need to first fetch the |
| 845 | history from the repository, create a history that contains changes done |
| 846 | by both parties, and push the result back.</p></div> |
| 847 | <div class="para"><p>You can perform "git pull", resolve potential conflicts, and "git push" |
| 848 | the result. A "git pull" will create a merge commit C between commits A |
| 849 | and B.</p></div> |
| 850 | <div class="listingblock"> |
| 851 | <div class="content"> |
| 852 | <pre><tt> |
| 853 | B---C |
| 854 | / / |
| 855 | ---X---A |
| 856 | </tt></pre> |
| 857 | </div></div> |
| 858 | <div class="para"><p>Updating A with the resulting merge commit will fast-forward and your |
| 859 | push will be accepted.</p></div> |
| 860 | <div class="para"><p>Alternatively, you can rebase your change between X and B on top of A, |
| 861 | with "git pull --rebase", and push the result back. The rebase will |
| 862 | create a new commit D that builds the change between X and B on top of |
| 863 | A.</p></div> |
| 864 | <div class="listingblock"> |
| 865 | <div class="content"> |
| 866 | <pre><tt> |
| 867 | B D |
| 868 | / / |
| 869 | ---X---A |
| 870 | </tt></pre> |
| 871 | </div></div> |
| 872 | <div class="para"><p>Again, updating A with this commit will fast-forward and your push will be |
| 873 | accepted.</p></div> |
| 874 | <div class="para"><p>There is another common situation where you may encounter non-fast-forward |
| 875 | rejection when you try to push, and it is possible even when you are |
| 876 | pushing into a repository nobody else pushes into. After you push commit |
| 877 | A yourself (in the first picture in this section), replace it with "git |
| 878 | commit --amend" to produce commit B, and you try to push it out, because |
| 879 | forgot that you have pushed A out already. In such a case, and only if |
| 880 | you are certain that nobody in the meantime fetched your earlier commit A |
| 881 | (and started building on top of it), you can run "git push --force" to |
| 882 | overwrite it. In other words, "git push --force" is a method reserved for |
| 883 | a case where you do mean to lose history.</p></div> |
| 884 | </div> |
Junio C Hamano | ba4b928 | 2008-07-06 05:20:31 | [diff] [blame] | 885 | <h2 id="_examples">Examples</h2> |
Junio C Hamano | 6926bef | 2007-06-16 09:54:05 | [diff] [blame] | 886 | <div class="sectionbody"> |
Junio C Hamano | ba4b928 | 2008-07-06 05:20:31 | [diff] [blame] | 887 | <div class="vlist"><dl> |
Junio C Hamano | 6926bef | 2007-06-16 09:54:05 | [diff] [blame] | 888 | <dt> |
Junio C Hamano | ea82cff | 2009-03-18 01:54:48 | [diff] [blame] | 889 | git push |
| 890 | </dt> |
| 891 | <dd> |
| 892 | <p> |
| 893 | Works like <tt>git push <remote></tt>, where <remote> is the |
| 894 | current branch's remote (or <tt>origin</tt>, if no remote is |
| 895 | configured for the current branch). |
| 896 | </p> |
| 897 | </dd> |
| 898 | <dt> |
| 899 | git push origin |
| 900 | </dt> |
| 901 | <dd> |
| 902 | <p> |
| 903 | Without additional configuration, works like |
| 904 | <tt>git push origin :</tt>. |
| 905 | </p> |
| 906 | <div class="para"><p>The default behavior of this command when no <refspec> is given can be |
| 907 | configured by setting the <tt>push</tt> option of the remote.</p></div> |
| 908 | <div class="para"><p>For example, to default to pushing only the current branch to <tt>origin</tt> |
| 909 | use <tt>git config remote.origin.push HEAD</tt>. Any valid <refspec> (like |
| 910 | the ones in the examples below) can be configured as the default for |
| 911 | <tt>git push origin</tt>.</p></div> |
| 912 | </dd> |
| 913 | <dt> |
| 914 | git push origin : |
| 915 | </dt> |
| 916 | <dd> |
| 917 | <p> |
| 918 | Push "matching" branches to <tt>origin</tt>. See |
| 919 | <refspec> in the <a href="#OPTIONS">OPTIONS</a> section above for a |
| 920 | description of "matching" branches. |
| 921 | </p> |
| 922 | </dd> |
| 923 | <dt> |
Junio C Hamano | 6926bef | 2007-06-16 09:54:05 | [diff] [blame] | 924 | git push origin master |
| 925 | </dt> |
| 926 | <dd> |
| 927 | <p> |
| 928 | Find a ref that matches <tt>master</tt> in the source repository |
| 929 | (most likely, it would find <tt>refs/heads/master</tt>), and update |
| 930 | the same ref (e.g. <tt>refs/heads/master</tt>) in <tt>origin</tt> repository |
Junio C Hamano | a9aee78 | 2008-04-23 16:09:20 | [diff] [blame] | 931 | with it. If <tt>master</tt> did not exist remotely, it would be |
| 932 | created. |
Junio C Hamano | 6926bef | 2007-06-16 09:54:05 | [diff] [blame] | 933 | </p> |
| 934 | </dd> |
| 935 | <dt> |
Junio C Hamano | 8b6e23b | 2009-02-01 06:36:08 | [diff] [blame] | 936 | git push origin HEAD |
Junio C Hamano | 6926bef | 2007-06-16 09:54:05 | [diff] [blame] | 937 | </dt> |
| 938 | <dd> |
| 939 | <p> |
Junio C Hamano | 8b6e23b | 2009-02-01 06:36:08 | [diff] [blame] | 940 | A handy way to push the current branch to the same name on the |
| 941 | remote. |
Junio C Hamano | 6926bef | 2007-06-16 09:54:05 | [diff] [blame] | 942 | </p> |
| 943 | </dd> |
| 944 | <dt> |
Junio C Hamano | 7f80ae8 | 2008-07-30 18:31:35 | [diff] [blame] | 945 | git push origin master:satellite/master dev:satellite/dev |
Junio C Hamano | 6926bef | 2007-06-16 09:54:05 | [diff] [blame] | 946 | </dt> |
| 947 | <dd> |
| 948 | <p> |
Junio C Hamano | 7f80ae8 | 2008-07-30 18:31:35 | [diff] [blame] | 949 | Use the source ref that matches <tt>master</tt> (e.g. <tt>refs/heads/master</tt>) |
| 950 | to update the ref that matches <tt>satellite/master</tt> (most probably |
| 951 | <tt>refs/remotes/satellite/master</tt>) in the <tt>origin</tt> repository, then |
| 952 | do the same for <tt>dev</tt> and <tt>satellite/dev</tt>. |
Junio C Hamano | 6926bef | 2007-06-16 09:54:05 | [diff] [blame] | 953 | </p> |
| 954 | </dd> |
Junio C Hamano | bfd4f9a | 2007-09-06 08:52:44 | [diff] [blame] | 955 | <dt> |
Junio C Hamano | 8b6e23b | 2009-02-01 06:36:08 | [diff] [blame] | 956 | git push origin HEAD:master |
| 957 | </dt> |
| 958 | <dd> |
| 959 | <p> |
| 960 | Push the current branch to the remote ref matching <tt>master</tt> in the |
| 961 | <tt>origin</tt> repository. This form is convenient to push the current |
| 962 | branch without thinking about its local name. |
| 963 | </p> |
| 964 | </dd> |
| 965 | <dt> |
Junio C Hamano | bfd4f9a | 2007-09-06 08:52:44 | [diff] [blame] | 966 | git push origin master:refs/heads/experimental |
| 967 | </dt> |
| 968 | <dd> |
| 969 | <p> |
| 970 | Create the branch <tt>experimental</tt> in the <tt>origin</tt> repository |
Junio C Hamano | a9aee78 | 2008-04-23 16:09:20 | [diff] [blame] | 971 | by copying the current <tt>master</tt> branch. This form is only |
| 972 | needed to create a new branch or tag in the remote repository when |
| 973 | the local name and the remote name are different; otherwise, |
| 974 | the ref name on its own will work. |
Junio C Hamano | bfd4f9a | 2007-09-06 08:52:44 | [diff] [blame] | 975 | </p> |
| 976 | </dd> |
Junio C Hamano | 8b6e23b | 2009-02-01 06:36:08 | [diff] [blame] | 977 | <dt> |
| 978 | git push origin :experimental |
| 979 | </dt> |
| 980 | <dd> |
| 981 | <p> |
| 982 | Find a ref that matches <tt>experimental</tt> in the <tt>origin</tt> repository |
| 983 | (e.g. <tt>refs/heads/experimental</tt>), and delete it. |
| 984 | </p> |
| 985 | </dd> |
Junio C Hamano | d533bdb | 2009-02-25 09:56:58 | [diff] [blame] | 986 | <dt> |
| 987 | git push origin +dev:master |
| 988 | </dt> |
| 989 | <dd> |
| 990 | <p> |
| 991 | Update the origin repository's master branch with the dev branch, |
| 992 | allowing non-fast forward updates. <strong>This can leave unreferenced |
| 993 | commits dangling in the origin repository.</strong> Consider the |
| 994 | following situation, where a fast forward is not possible: |
| 995 | </p> |
| 996 | <div class="listingblock"> |
| 997 | <div class="content"> |
| 998 | <pre><tt> o---o---o---A---B origin/master |
| 999 | \ |
| 1000 | X---Y---Z dev</tt></pre> |
| 1001 | </div></div> |
| 1002 | <div class="para"><p>The above command would change the origin repository to</p></div> |
| 1003 | <div class="listingblock"> |
| 1004 | <div class="content"> |
| 1005 | <pre><tt> A---B (unnamed branch) |
| 1006 | / |
| 1007 | o---o---o---X---Y---Z master</tt></pre> |
| 1008 | </div></div> |
| 1009 | <div class="para"><p>Commits A and B would no longer belong to a branch with a symbolic name, |
| 1010 | and so would be unreachable. As such, these commits would be removed by |
| 1011 | a <tt>git gc</tt> command on the origin repository.</p></div> |
| 1012 | </dd> |
Junio C Hamano | ba4b928 | 2008-07-06 05:20:31 | [diff] [blame] | 1013 | </dl></div> |
Junio C Hamano | 6926bef | 2007-06-16 09:54:05 | [diff] [blame] | 1014 | </div> |
Junio C Hamano | ba4b928 | 2008-07-06 05:20:31 | [diff] [blame] | 1015 | <h2 id="_author">Author</h2> |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 1016 | <div class="sectionbody"> |
Junio C Hamano | 0868a30 | 2008-07-22 09:20:44 | [diff] [blame] | 1017 | <div class="para"><p>Written by Junio C Hamano <gitster@pobox.com>, later rewritten in C |
Junio C Hamano | ba4b928 | 2008-07-06 05:20:31 | [diff] [blame] | 1018 | by Linus Torvalds <torvalds@osdl.org></p></div> |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 1019 | </div> |
Junio C Hamano | ba4b928 | 2008-07-06 05:20:31 | [diff] [blame] | 1020 | <h2 id="_documentation">Documentation</h2> |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 1021 | <div class="sectionbody"> |
Junio C Hamano | ba4b928 | 2008-07-06 05:20:31 | [diff] [blame] | 1022 | <div class="para"><p>Documentation by Junio C Hamano and the git-list <git@vger.kernel.org>.</p></div> |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 1023 | </div> |
Junio C Hamano | ba4b928 | 2008-07-06 05:20:31 | [diff] [blame] | 1024 | <h2 id="_git">GIT</h2> |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 1025 | <div class="sectionbody"> |
Junio C Hamano | ba4b928 | 2008-07-06 05:20:31 | [diff] [blame] | 1026 | <div class="para"><p>Part of the <a href="git.html">git(1)</a> suite</p></div> |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 1027 | </div> |
| 1028 | <div id="footer"> |
| 1029 | <div id="footer-text"> |
Junio C Hamano | d6fff40 | 2009-09-14 09:40:50 | [diff] [blame] | 1030 | Last updated 2009-09-14 09:40:30 UTC |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 1031 | </div> |
| 1032 | </div> |
| 1033 | </body> |
| 1034 | </html> |