Documentation / git.txton commit upload-pack.c: use error_errno() (d2b6afa)
   1git(1)
   2======
   3
   4NAME
   5----
   6git - the stupid content tracker
   7
   8
   9SYNOPSIS
  10--------
  11[verse]
  12'git' [--version] [--help] [-C <path>] [-c <name>=<value>]
  13    [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]
  14    [-p|--paginate|--no-pager] [--no-replace-objects] [--bare]
  15    [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]
  16    <command> [<args>]
  17
  18DESCRIPTION
  19-----------
  20Git is a fast, scalable, distributed revision control system with an
  21unusually rich command set that provides both high-level operations
  22and full access to internals.
  23
  24See linkgit:gittutorial[7] to get started, then see
  25linkgit:giteveryday[7] for a useful minimum set of
  26commands.  The link:user-manual.html[Git User's Manual] has a more
  27in-depth introduction.
  28
  29After you mastered the basic concepts, you can come back to this
  30page to learn what commands Git offers.  You can learn more about
  31individual Git commands with "git help command".  linkgit:gitcli[7]
  32manual page gives you an overview of the command-line command syntax.
  33
  34Formatted and hyperlinked version of the latest Git documentation
  35can be viewed at `http://git-htmldocs.googlecode.com/git/git.html`.
  36
  37ifdef::stalenotes[]
  38[NOTE]
  39============
  40
  41You are reading the documentation for the latest (possibly
  42unreleased) version of Git, that is available from the 'master'
  43branch of the `git.git` repository.
  44Documentation for older releases are available here:
  45
  46* link:v2.8.0/git.html[documentation for release 2.8]
  47
  48* release notes for
  49  link:RelNotes/2.8.0.txt[2.8].
  50
  51* link:v2.7.3/git.html[documentation for release 2.7.3]
  52
  53* release notes for
  54  link:RelNotes/2.7.3.txt[2.7.3],
  55  link:RelNotes/2.7.2.txt[2.7.2],
  56  link:RelNotes/2.7.1.txt[2.7.1],
  57  link:RelNotes/2.7.0.txt[2.7].
  58
  59* link:v2.6.6/git.html[documentation for release 2.6.6]
  60
  61* release notes for
  62  link:RelNotes/2.6.6.txt[2.6.6],
  63  link:RelNotes/2.6.5.txt[2.6.5],
  64  link:RelNotes/2.6.4.txt[2.6.4],
  65  link:RelNotes/2.6.3.txt[2.6.3],
  66  link:RelNotes/2.6.2.txt[2.6.2],
  67  link:RelNotes/2.6.1.txt[2.6.1],
  68  link:RelNotes/2.6.0.txt[2.6].
  69
  70* link:v2.5.5/git.html[documentation for release 2.5.5]
  71
  72* release notes for
  73  link:RelNotes/2.5.5.txt[2.5.5],
  74  link:RelNotes/2.5.4.txt[2.5.4],
  75  link:RelNotes/2.5.3.txt[2.5.3],
  76  link:RelNotes/2.5.2.txt[2.5.2],
  77  link:RelNotes/2.5.1.txt[2.5.1],
  78  link:RelNotes/2.5.0.txt[2.5].
  79
  80* link:v2.4.11/git.html[documentation for release 2.4.11]
  81
  82* release notes for
  83  link:RelNotes/2.4.11.txt[2.4.11],
  84  link:RelNotes/2.4.10.txt[2.4.10],
  85  link:RelNotes/2.4.9.txt[2.4.9],
  86  link:RelNotes/2.4.8.txt[2.4.8],
  87  link:RelNotes/2.4.7.txt[2.4.7],
  88  link:RelNotes/2.4.6.txt[2.4.6],
  89  link:RelNotes/2.4.5.txt[2.4.5],
  90  link:RelNotes/2.4.4.txt[2.4.4],
  91  link:RelNotes/2.4.3.txt[2.4.3],
  92  link:RelNotes/2.4.2.txt[2.4.2],
  93  link:RelNotes/2.4.1.txt[2.4.1],
  94  link:RelNotes/2.4.0.txt[2.4].
  95
  96* link:v2.3.10/git.html[documentation for release 2.3.10]
  97
  98* release notes for
  99  link:RelNotes/2.3.10.txt[2.3.10],
 100  link:RelNotes/2.3.9.txt[2.3.9],
 101  link:RelNotes/2.3.8.txt[2.3.8],
 102  link:RelNotes/2.3.7.txt[2.3.7],
 103  link:RelNotes/2.3.6.txt[2.3.6],
 104  link:RelNotes/2.3.5.txt[2.3.5],
 105  link:RelNotes/2.3.4.txt[2.3.4],
 106  link:RelNotes/2.3.3.txt[2.3.3],
 107  link:RelNotes/2.3.2.txt[2.3.2],
 108  link:RelNotes/2.3.1.txt[2.3.1],
 109  link:RelNotes/2.3.0.txt[2.3].
 110
 111* link:v2.2.3/git.html[documentation for release 2.2.3]
 112
 113* release notes for
 114  link:RelNotes/2.2.3.txt[2.2.3],
 115  link:RelNotes/2.2.2.txt[2.2.2],
 116  link:RelNotes/2.2.1.txt[2.2.1],
 117  link:RelNotes/2.2.0.txt[2.2].
 118
 119* link:v2.1.4/git.html[documentation for release 2.1.4]
 120
 121* release notes for
 122  link:RelNotes/2.1.4.txt[2.1.4],
 123  link:RelNotes/2.1.3.txt[2.1.3],
 124  link:RelNotes/2.1.2.txt[2.1.2],
 125  link:RelNotes/2.1.1.txt[2.1.1],
 126  link:RelNotes/2.1.0.txt[2.1].
 127
 128* link:v2.0.5/git.html[documentation for release 2.0.5]
 129
 130* release notes for
 131  link:RelNotes/2.0.5.txt[2.0.5],
 132  link:RelNotes/2.0.4.txt[2.0.4],
 133  link:RelNotes/2.0.3.txt[2.0.3],
 134  link:RelNotes/2.0.2.txt[2.0.2],
 135  link:RelNotes/2.0.1.txt[2.0.1],
 136  link:RelNotes/2.0.0.txt[2.0.0].
 137
 138* link:v1.9.5/git.html[documentation for release 1.9.5]
 139
 140* release notes for
 141  link:RelNotes/1.9.5.txt[1.9.5],
 142  link:RelNotes/1.9.4.txt[1.9.4],
 143  link:RelNotes/1.9.3.txt[1.9.3],
 144  link:RelNotes/1.9.2.txt[1.9.2],
 145  link:RelNotes/1.9.1.txt[1.9.1],
 146  link:RelNotes/1.9.0.txt[1.9.0].
 147
 148* link:v1.8.5.6/git.html[documentation for release 1.8.5.6]
 149
 150* release notes for
 151  link:RelNotes/1.8.5.6.txt[1.8.5.6],
 152  link:RelNotes/1.8.5.5.txt[1.8.5.5],
 153  link:RelNotes/1.8.5.4.txt[1.8.5.4],
 154  link:RelNotes/1.8.5.3.txt[1.8.5.3],
 155  link:RelNotes/1.8.5.2.txt[1.8.5.2],
 156  link:RelNotes/1.8.5.1.txt[1.8.5.1],
 157  link:RelNotes/1.8.5.txt[1.8.5].
 158
 159* link:v1.8.4.5/git.html[documentation for release 1.8.4.5]
 160
 161* release notes for
 162  link:RelNotes/1.8.4.5.txt[1.8.4.5],
 163  link:RelNotes/1.8.4.4.txt[1.8.4.4],
 164  link:RelNotes/1.8.4.3.txt[1.8.4.3],
 165  link:RelNotes/1.8.4.2.txt[1.8.4.2],
 166  link:RelNotes/1.8.4.1.txt[1.8.4.1],
 167  link:RelNotes/1.8.4.txt[1.8.4].
 168
 169* link:v1.8.3.4/git.html[documentation for release 1.8.3.4]
 170
 171* release notes for
 172  link:RelNotes/1.8.3.4.txt[1.8.3.4],
 173  link:RelNotes/1.8.3.3.txt[1.8.3.3],
 174  link:RelNotes/1.8.3.2.txt[1.8.3.2],
 175  link:RelNotes/1.8.3.1.txt[1.8.3.1],
 176  link:RelNotes/1.8.3.txt[1.8.3].
 177
 178* link:v1.8.2.3/git.html[documentation for release 1.8.2.3]
 179
 180* release notes for
 181  link:RelNotes/1.8.2.3.txt[1.8.2.3],
 182  link:RelNotes/1.8.2.2.txt[1.8.2.2],
 183  link:RelNotes/1.8.2.1.txt[1.8.2.1],
 184  link:RelNotes/1.8.2.txt[1.8.2].
 185
 186* link:v1.8.1.6/git.html[documentation for release 1.8.1.6]
 187
 188* release notes for
 189  link:RelNotes/1.8.1.6.txt[1.8.1.6],
 190  link:RelNotes/1.8.1.5.txt[1.8.1.5],
 191  link:RelNotes/1.8.1.4.txt[1.8.1.4],
 192  link:RelNotes/1.8.1.3.txt[1.8.1.3],
 193  link:RelNotes/1.8.1.2.txt[1.8.1.2],
 194  link:RelNotes/1.8.1.1.txt[1.8.1.1],
 195  link:RelNotes/1.8.1.txt[1.8.1].
 196
 197* link:v1.8.0.3/git.html[documentation for release 1.8.0.3]
 198
 199* release notes for
 200  link:RelNotes/1.8.0.3.txt[1.8.0.3],
 201  link:RelNotes/1.8.0.2.txt[1.8.0.2],
 202  link:RelNotes/1.8.0.1.txt[1.8.0.1],
 203  link:RelNotes/1.8.0.txt[1.8.0].
 204
 205* link:v1.7.12.4/git.html[documentation for release 1.7.12.4]
 206
 207* release notes for
 208  link:RelNotes/1.7.12.4.txt[1.7.12.4],
 209  link:RelNotes/1.7.12.3.txt[1.7.12.3],
 210  link:RelNotes/1.7.12.2.txt[1.7.12.2],
 211  link:RelNotes/1.7.12.1.txt[1.7.12.1],
 212  link:RelNotes/1.7.12.txt[1.7.12].
 213
 214* link:v1.7.11.7/git.html[documentation for release 1.7.11.7]
 215
 216* release notes for
 217  link:RelNotes/1.7.11.7.txt[1.7.11.7],
 218  link:RelNotes/1.7.11.6.txt[1.7.11.6],
 219  link:RelNotes/1.7.11.5.txt[1.7.11.5],
 220  link:RelNotes/1.7.11.4.txt[1.7.11.4],
 221  link:RelNotes/1.7.11.3.txt[1.7.11.3],
 222  link:RelNotes/1.7.11.2.txt[1.7.11.2],
 223  link:RelNotes/1.7.11.1.txt[1.7.11.1],
 224  link:RelNotes/1.7.11.txt[1.7.11].
 225
 226* link:v1.7.10.5/git.html[documentation for release 1.7.10.5]
 227
 228* release notes for
 229  link:RelNotes/1.7.10.5.txt[1.7.10.5],
 230  link:RelNotes/1.7.10.4.txt[1.7.10.4],
 231  link:RelNotes/1.7.10.3.txt[1.7.10.3],
 232  link:RelNotes/1.7.10.2.txt[1.7.10.2],
 233  link:RelNotes/1.7.10.1.txt[1.7.10.1],
 234  link:RelNotes/1.7.10.txt[1.7.10].
 235
 236* link:v1.7.9.7/git.html[documentation for release 1.7.9.7]
 237
 238* release notes for
 239  link:RelNotes/1.7.9.7.txt[1.7.9.7],
 240  link:RelNotes/1.7.9.6.txt[1.7.9.6],
 241  link:RelNotes/1.7.9.5.txt[1.7.9.5],
 242  link:RelNotes/1.7.9.4.txt[1.7.9.4],
 243  link:RelNotes/1.7.9.3.txt[1.7.9.3],
 244  link:RelNotes/1.7.9.2.txt[1.7.9.2],
 245  link:RelNotes/1.7.9.1.txt[1.7.9.1],
 246  link:RelNotes/1.7.9.txt[1.7.9].
 247
 248* link:v1.7.8.6/git.html[documentation for release 1.7.8.6]
 249
 250* release notes for
 251  link:RelNotes/1.7.8.6.txt[1.7.8.6],
 252  link:RelNotes/1.7.8.5.txt[1.7.8.5],
 253  link:RelNotes/1.7.8.4.txt[1.7.8.4],
 254  link:RelNotes/1.7.8.3.txt[1.7.8.3],
 255  link:RelNotes/1.7.8.2.txt[1.7.8.2],
 256  link:RelNotes/1.7.8.1.txt[1.7.8.1],
 257  link:RelNotes/1.7.8.txt[1.7.8].
 258
 259* link:v1.7.7.7/git.html[documentation for release 1.7.7.7]
 260
 261* release notes for
 262  link:RelNotes/1.7.7.7.txt[1.7.7.7],
 263  link:RelNotes/1.7.7.6.txt[1.7.7.6],
 264  link:RelNotes/1.7.7.5.txt[1.7.7.5],
 265  link:RelNotes/1.7.7.4.txt[1.7.7.4],
 266  link:RelNotes/1.7.7.3.txt[1.7.7.3],
 267  link:RelNotes/1.7.7.2.txt[1.7.7.2],
 268  link:RelNotes/1.7.7.1.txt[1.7.7.1],
 269  link:RelNotes/1.7.7.txt[1.7.7].
 270
 271* link:v1.7.6.6/git.html[documentation for release 1.7.6.6]
 272
 273* release notes for
 274  link:RelNotes/1.7.6.6.txt[1.7.6.6],
 275  link:RelNotes/1.7.6.5.txt[1.7.6.5],
 276  link:RelNotes/1.7.6.4.txt[1.7.6.4],
 277  link:RelNotes/1.7.6.3.txt[1.7.6.3],
 278  link:RelNotes/1.7.6.2.txt[1.7.6.2],
 279  link:RelNotes/1.7.6.1.txt[1.7.6.1],
 280  link:RelNotes/1.7.6.txt[1.7.6].
 281
 282* link:v1.7.5.4/git.html[documentation for release 1.7.5.4]
 283
 284* release notes for
 285  link:RelNotes/1.7.5.4.txt[1.7.5.4],
 286  link:RelNotes/1.7.5.3.txt[1.7.5.3],
 287  link:RelNotes/1.7.5.2.txt[1.7.5.2],
 288  link:RelNotes/1.7.5.1.txt[1.7.5.1],
 289  link:RelNotes/1.7.5.txt[1.7.5].
 290
 291* link:v1.7.4.5/git.html[documentation for release 1.7.4.5]
 292
 293* release notes for
 294  link:RelNotes/1.7.4.5.txt[1.7.4.5],
 295  link:RelNotes/1.7.4.4.txt[1.7.4.4],
 296  link:RelNotes/1.7.4.3.txt[1.7.4.3],
 297  link:RelNotes/1.7.4.2.txt[1.7.4.2],
 298  link:RelNotes/1.7.4.1.txt[1.7.4.1],
 299  link:RelNotes/1.7.4.txt[1.7.4].
 300
 301* link:v1.7.3.5/git.html[documentation for release 1.7.3.5]
 302
 303* release notes for
 304  link:RelNotes/1.7.3.5.txt[1.7.3.5],
 305  link:RelNotes/1.7.3.4.txt[1.7.3.4],
 306  link:RelNotes/1.7.3.3.txt[1.7.3.3],
 307  link:RelNotes/1.7.3.2.txt[1.7.3.2],
 308  link:RelNotes/1.7.3.1.txt[1.7.3.1],
 309  link:RelNotes/1.7.3.txt[1.7.3].
 310
 311* link:v1.7.2.5/git.html[documentation for release 1.7.2.5]
 312
 313* release notes for
 314  link:RelNotes/1.7.2.5.txt[1.7.2.5],
 315  link:RelNotes/1.7.2.4.txt[1.7.2.4],
 316  link:RelNotes/1.7.2.3.txt[1.7.2.3],
 317  link:RelNotes/1.7.2.2.txt[1.7.2.2],
 318  link:RelNotes/1.7.2.1.txt[1.7.2.1],
 319  link:RelNotes/1.7.2.txt[1.7.2].
 320
 321* link:v1.7.1.4/git.html[documentation for release 1.7.1.4]
 322
 323* release notes for
 324  link:RelNotes/1.7.1.4.txt[1.7.1.4],
 325  link:RelNotes/1.7.1.3.txt[1.7.1.3],
 326  link:RelNotes/1.7.1.2.txt[1.7.1.2],
 327  link:RelNotes/1.7.1.1.txt[1.7.1.1],
 328  link:RelNotes/1.7.1.txt[1.7.1].
 329
 330* link:v1.7.0.9/git.html[documentation for release 1.7.0.9]
 331
 332* release notes for
 333  link:RelNotes/1.7.0.9.txt[1.7.0.9],
 334  link:RelNotes/1.7.0.8.txt[1.7.0.8],
 335  link:RelNotes/1.7.0.7.txt[1.7.0.7],
 336  link:RelNotes/1.7.0.6.txt[1.7.0.6],
 337  link:RelNotes/1.7.0.5.txt[1.7.0.5],
 338  link:RelNotes/1.7.0.4.txt[1.7.0.4],
 339  link:RelNotes/1.7.0.3.txt[1.7.0.3],
 340  link:RelNotes/1.7.0.2.txt[1.7.0.2],
 341  link:RelNotes/1.7.0.1.txt[1.7.0.1],
 342  link:RelNotes/1.7.0.txt[1.7.0].
 343
 344* link:v1.6.6.3/git.html[documentation for release 1.6.6.3]
 345
 346* release notes for
 347  link:RelNotes/1.6.6.3.txt[1.6.6.3],
 348  link:RelNotes/1.6.6.2.txt[1.6.6.2],
 349  link:RelNotes/1.6.6.1.txt[1.6.6.1],
 350  link:RelNotes/1.6.6.txt[1.6.6].
 351
 352* link:v1.6.5.9/git.html[documentation for release 1.6.5.9]
 353
 354* release notes for
 355  link:RelNotes/1.6.5.9.txt[1.6.5.9],
 356  link:RelNotes/1.6.5.8.txt[1.6.5.8],
 357  link:RelNotes/1.6.5.7.txt[1.6.5.7],
 358  link:RelNotes/1.6.5.6.txt[1.6.5.6],
 359  link:RelNotes/1.6.5.5.txt[1.6.5.5],
 360  link:RelNotes/1.6.5.4.txt[1.6.5.4],
 361  link:RelNotes/1.6.5.3.txt[1.6.5.3],
 362  link:RelNotes/1.6.5.2.txt[1.6.5.2],
 363  link:RelNotes/1.6.5.1.txt[1.6.5.1],
 364  link:RelNotes/1.6.5.txt[1.6.5].
 365
 366* link:v1.6.4.5/git.html[documentation for release 1.6.4.5]
 367
 368* release notes for
 369  link:RelNotes/1.6.4.5.txt[1.6.4.5],
 370  link:RelNotes/1.6.4.4.txt[1.6.4.4],
 371  link:RelNotes/1.6.4.3.txt[1.6.4.3],
 372  link:RelNotes/1.6.4.2.txt[1.6.4.2],
 373  link:RelNotes/1.6.4.1.txt[1.6.4.1],
 374  link:RelNotes/1.6.4.txt[1.6.4].
 375
 376* link:v1.6.3.4/git.html[documentation for release 1.6.3.4]
 377
 378* release notes for
 379  link:RelNotes/1.6.3.4.txt[1.6.3.4],
 380  link:RelNotes/1.6.3.3.txt[1.6.3.3],
 381  link:RelNotes/1.6.3.2.txt[1.6.3.2],
 382  link:RelNotes/1.6.3.1.txt[1.6.3.1],
 383  link:RelNotes/1.6.3.txt[1.6.3].
 384
 385* release notes for
 386  link:RelNotes/1.6.2.5.txt[1.6.2.5],
 387  link:RelNotes/1.6.2.4.txt[1.6.2.4],
 388  link:RelNotes/1.6.2.3.txt[1.6.2.3],
 389  link:RelNotes/1.6.2.2.txt[1.6.2.2],
 390  link:RelNotes/1.6.2.1.txt[1.6.2.1],
 391  link:RelNotes/1.6.2.txt[1.6.2].
 392
 393* link:v1.6.1.3/git.html[documentation for release 1.6.1.3]
 394
 395* release notes for
 396  link:RelNotes/1.6.1.3.txt[1.6.1.3],
 397  link:RelNotes/1.6.1.2.txt[1.6.1.2],
 398  link:RelNotes/1.6.1.1.txt[1.6.1.1],
 399  link:RelNotes/1.6.1.txt[1.6.1].
 400
 401* link:v1.6.0.6/git.html[documentation for release 1.6.0.6]
 402
 403* release notes for
 404  link:RelNotes/1.6.0.6.txt[1.6.0.6],
 405  link:RelNotes/1.6.0.5.txt[1.6.0.5],
 406  link:RelNotes/1.6.0.4.txt[1.6.0.4],
 407  link:RelNotes/1.6.0.3.txt[1.6.0.3],
 408  link:RelNotes/1.6.0.2.txt[1.6.0.2],
 409  link:RelNotes/1.6.0.1.txt[1.6.0.1],
 410  link:RelNotes/1.6.0.txt[1.6.0].
 411
 412* link:v1.5.6.6/git.html[documentation for release 1.5.6.6]
 413
 414* release notes for
 415  link:RelNotes/1.5.6.6.txt[1.5.6.6],
 416  link:RelNotes/1.5.6.5.txt[1.5.6.5],
 417  link:RelNotes/1.5.6.4.txt[1.5.6.4],
 418  link:RelNotes/1.5.6.3.txt[1.5.6.3],
 419  link:RelNotes/1.5.6.2.txt[1.5.6.2],
 420  link:RelNotes/1.5.6.1.txt[1.5.6.1],
 421  link:RelNotes/1.5.6.txt[1.5.6].
 422
 423* link:v1.5.5.6/git.html[documentation for release 1.5.5.6]
 424
 425* release notes for
 426  link:RelNotes/1.5.5.6.txt[1.5.5.6],
 427  link:RelNotes/1.5.5.5.txt[1.5.5.5],
 428  link:RelNotes/1.5.5.4.txt[1.5.5.4],
 429  link:RelNotes/1.5.5.3.txt[1.5.5.3],
 430  link:RelNotes/1.5.5.2.txt[1.5.5.2],
 431  link:RelNotes/1.5.5.1.txt[1.5.5.1],
 432  link:RelNotes/1.5.5.txt[1.5.5].
 433
 434* link:v1.5.4.7/git.html[documentation for release 1.5.4.7]
 435
 436* release notes for
 437  link:RelNotes/1.5.4.7.txt[1.5.4.7],
 438  link:RelNotes/1.5.4.6.txt[1.5.4.6],
 439  link:RelNotes/1.5.4.5.txt[1.5.4.5],
 440  link:RelNotes/1.5.4.4.txt[1.5.4.4],
 441  link:RelNotes/1.5.4.3.txt[1.5.4.3],
 442  link:RelNotes/1.5.4.2.txt[1.5.4.2],
 443  link:RelNotes/1.5.4.1.txt[1.5.4.1],
 444  link:RelNotes/1.5.4.txt[1.5.4].
 445
 446* link:v1.5.3.8/git.html[documentation for release 1.5.3.8]
 447
 448* release notes for
 449  link:RelNotes/1.5.3.8.txt[1.5.3.8],
 450  link:RelNotes/1.5.3.7.txt[1.5.3.7],
 451  link:RelNotes/1.5.3.6.txt[1.5.3.6],
 452  link:RelNotes/1.5.3.5.txt[1.5.3.5],
 453  link:RelNotes/1.5.3.4.txt[1.5.3.4],
 454  link:RelNotes/1.5.3.3.txt[1.5.3.3],
 455  link:RelNotes/1.5.3.2.txt[1.5.3.2],
 456  link:RelNotes/1.5.3.1.txt[1.5.3.1],
 457  link:RelNotes/1.5.3.txt[1.5.3].
 458
 459* link:v1.5.2.5/git.html[documentation for release 1.5.2.5]
 460
 461* release notes for
 462  link:RelNotes/1.5.2.5.txt[1.5.2.5],
 463  link:RelNotes/1.5.2.4.txt[1.5.2.4],
 464  link:RelNotes/1.5.2.3.txt[1.5.2.3],
 465  link:RelNotes/1.5.2.2.txt[1.5.2.2],
 466  link:RelNotes/1.5.2.1.txt[1.5.2.1],
 467  link:RelNotes/1.5.2.txt[1.5.2].
 468
 469* link:v1.5.1.6/git.html[documentation for release 1.5.1.6]
 470
 471* release notes for
 472  link:RelNotes/1.5.1.6.txt[1.5.1.6],
 473  link:RelNotes/1.5.1.5.txt[1.5.1.5],
 474  link:RelNotes/1.5.1.4.txt[1.5.1.4],
 475  link:RelNotes/1.5.1.3.txt[1.5.1.3],
 476  link:RelNotes/1.5.1.2.txt[1.5.1.2],
 477  link:RelNotes/1.5.1.1.txt[1.5.1.1],
 478  link:RelNotes/1.5.1.txt[1.5.1].
 479
 480* link:v1.5.0.7/git.html[documentation for release 1.5.0.7]
 481
 482* release notes for
 483  link:RelNotes/1.5.0.7.txt[1.5.0.7],
 484  link:RelNotes/1.5.0.6.txt[1.5.0.6],
 485  link:RelNotes/1.5.0.5.txt[1.5.0.5],
 486  link:RelNotes/1.5.0.3.txt[1.5.0.3],
 487  link:RelNotes/1.5.0.2.txt[1.5.0.2],
 488  link:RelNotes/1.5.0.1.txt[1.5.0.1],
 489  link:RelNotes/1.5.0.txt[1.5.0].
 490
 491* documentation for release link:v1.4.4.4/git.html[1.4.4.4],
 492  link:v1.3.3/git.html[1.3.3],
 493  link:v1.2.6/git.html[1.2.6],
 494  link:v1.0.13/git.html[1.0.13].
 495
 496============
 497
 498endif::stalenotes[]
 499
 500OPTIONS
 501-------
 502--version::
 503        Prints the Git suite version that the 'git' program came from.
 504
 505--help::
 506        Prints the synopsis and a list of the most commonly used
 507        commands. If the option '--all' or '-a' is given then all
 508        available commands are printed. If a Git command is named this
 509        option will bring up the manual page for that command.
 510+
 511Other options are available to control how the manual page is
 512displayed. See linkgit:git-help[1] for more information,
 513because `git --help ...` is converted internally into `git
 514help ...`.
 515
 516-C <path>::
 517        Run as if git was started in '<path>' instead of the current working
 518        directory.  When multiple `-C` options are given, each subsequent
 519        non-absolute `-C <path>` is interpreted relative to the preceding `-C
 520        <path>`.
 521+
 522This option affects options that expect path name like `--git-dir` and
 523`--work-tree` in that their interpretations of the path names would be
 524made relative to the working directory caused by the `-C` option. For
 525example the following invocations are equivalent:
 526
 527    git --git-dir=a.git --work-tree=b -C c status
 528    git --git-dir=c/a.git --work-tree=c/b status
 529
 530-c <name>=<value>::
 531        Pass a configuration parameter to the command. The value
 532        given will override values from configuration files.
 533        The <name> is expected in the same format as listed by
 534        'git config' (subkeys separated by dots).
 535+
 536Note that omitting the `=` in `git -c foo.bar ...` is allowed and sets
 537`foo.bar` to the boolean true value (just like `[foo]bar` would in a
 538config file). Including the equals but with an empty value (like `git -c
 539foo.bar= ...`) sets `foo.bar` to the empty string.
 540
 541--exec-path[=<path>]::
 542        Path to wherever your core Git programs are installed.
 543        This can also be controlled by setting the GIT_EXEC_PATH
 544        environment variable. If no path is given, 'git' will print
 545        the current setting and then exit.
 546
 547--html-path::
 548        Print the path, without trailing slash, where Git's HTML
 549        documentation is installed and exit.
 550
 551--man-path::
 552        Print the manpath (see `man(1)`) for the man pages for
 553        this version of Git and exit.
 554
 555--info-path::
 556        Print the path where the Info files documenting this
 557        version of Git are installed and exit.
 558
 559-p::
 560--paginate::
 561        Pipe all output into 'less' (or if set, $PAGER) if standard
 562        output is a terminal.  This overrides the `pager.<cmd>`
 563        configuration options (see the "Configuration Mechanism" section
 564        below).
 565
 566--no-pager::
 567        Do not pipe Git output into a pager.
 568
 569--git-dir=<path>::
 570        Set the path to the repository. This can also be controlled by
 571        setting the GIT_DIR environment variable. It can be an absolute
 572        path or relative path to current working directory.
 573
 574--work-tree=<path>::
 575        Set the path to the working tree. It can be an absolute path
 576        or a path relative to the current working directory.
 577        This can also be controlled by setting the GIT_WORK_TREE
 578        environment variable and the core.worktree configuration
 579        variable (see core.worktree in linkgit:git-config[1] for a
 580        more detailed discussion).
 581
 582--namespace=<path>::
 583        Set the Git namespace.  See linkgit:gitnamespaces[7] for more
 584        details.  Equivalent to setting the `GIT_NAMESPACE` environment
 585        variable.
 586
 587--bare::
 588        Treat the repository as a bare repository.  If GIT_DIR
 589        environment is not set, it is set to the current working
 590        directory.
 591
 592--no-replace-objects::
 593        Do not use replacement refs to replace Git objects. See
 594        linkgit:git-replace[1] for more information.
 595
 596--literal-pathspecs::
 597        Treat pathspecs literally (i.e. no globbing, no pathspec magic).
 598        This is equivalent to setting the `GIT_LITERAL_PATHSPECS` environment
 599        variable to `1`.
 600
 601--glob-pathspecs::
 602        Add "glob" magic to all pathspec. This is equivalent to setting
 603        the `GIT_GLOB_PATHSPECS` environment variable to `1`. Disabling
 604        globbing on individual pathspecs can be done using pathspec
 605        magic ":(literal)"
 606
 607--noglob-pathspecs::
 608        Add "literal" magic to all pathspec. This is equivalent to setting
 609        the `GIT_NOGLOB_PATHSPECS` environment variable to `1`. Enabling
 610        globbing on individual pathspecs can be done using pathspec
 611        magic ":(glob)"
 612
 613--icase-pathspecs::
 614        Add "icase" magic to all pathspec. This is equivalent to setting
 615        the `GIT_ICASE_PATHSPECS` environment variable to `1`.
 616
 617GIT COMMANDS
 618------------
 619
 620We divide Git into high level ("porcelain") commands and low level
 621("plumbing") commands.
 622
 623High-level commands (porcelain)
 624-------------------------------
 625
 626We separate the porcelain commands into the main commands and some
 627ancillary user utilities.
 628
 629Main porcelain commands
 630~~~~~~~~~~~~~~~~~~~~~~~
 631
 632include::cmds-mainporcelain.txt[]
 633
 634Ancillary Commands
 635~~~~~~~~~~~~~~~~~~
 636Manipulators:
 637
 638include::cmds-ancillarymanipulators.txt[]
 639
 640Interrogators:
 641
 642include::cmds-ancillaryinterrogators.txt[]
 643
 644
 645Interacting with Others
 646~~~~~~~~~~~~~~~~~~~~~~~
 647
 648These commands are to interact with foreign SCM and with other
 649people via patch over e-mail.
 650
 651include::cmds-foreignscminterface.txt[]
 652
 653
 654Low-level commands (plumbing)
 655-----------------------------
 656
 657Although Git includes its
 658own porcelain layer, its low-level commands are sufficient to support
 659development of alternative porcelains.  Developers of such porcelains
 660might start by reading about linkgit:git-update-index[1] and
 661linkgit:git-read-tree[1].
 662
 663The interface (input, output, set of options and the semantics)
 664to these low-level commands are meant to be a lot more stable
 665than Porcelain level commands, because these commands are
 666primarily for scripted use.  The interface to Porcelain commands
 667on the other hand are subject to change in order to improve the
 668end user experience.
 669
 670The following description divides
 671the low-level commands into commands that manipulate objects (in
 672the repository, index, and working tree), commands that interrogate and
 673compare objects, and commands that move objects and references between
 674repositories.
 675
 676
 677Manipulation commands
 678~~~~~~~~~~~~~~~~~~~~~
 679
 680include::cmds-plumbingmanipulators.txt[]
 681
 682
 683Interrogation commands
 684~~~~~~~~~~~~~~~~~~~~~~
 685
 686include::cmds-plumbinginterrogators.txt[]
 687
 688In general, the interrogate commands do not touch the files in
 689the working tree.
 690
 691
 692Synching repositories
 693~~~~~~~~~~~~~~~~~~~~~
 694
 695include::cmds-synchingrepositories.txt[]
 696
 697The following are helper commands used by the above; end users
 698typically do not use them directly.
 699
 700include::cmds-synchelpers.txt[]
 701
 702
 703Internal helper commands
 704~~~~~~~~~~~~~~~~~~~~~~~~
 705
 706These are internal helper commands used by other commands; end
 707users typically do not use them directly.
 708
 709include::cmds-purehelpers.txt[]
 710
 711
 712Configuration Mechanism
 713-----------------------
 714
 715Git uses a simple text format to store customizations that are per
 716repository and are per user.  Such a configuration file may look
 717like this:
 718
 719------------
 720#
 721# A '#' or ';' character indicates a comment.
 722#
 723
 724; core variables
 725[core]
 726        ; Don't trust file modes
 727        filemode = false
 728
 729; user identity
 730[user]
 731        name = "Junio C Hamano"
 732        email = "gitster@pobox.com"
 733
 734------------
 735
 736Various commands read from the configuration file and adjust
 737their operation accordingly.  See linkgit:git-config[1] for a
 738list and more details about the configuration mechanism.
 739
 740
 741Identifier Terminology
 742----------------------
 743<object>::
 744        Indicates the object name for any type of object.
 745
 746<blob>::
 747        Indicates a blob object name.
 748
 749<tree>::
 750        Indicates a tree object name.
 751
 752<commit>::
 753        Indicates a commit object name.
 754
 755<tree-ish>::
 756        Indicates a tree, commit or tag object name.  A
 757        command that takes a <tree-ish> argument ultimately wants to
 758        operate on a <tree> object but automatically dereferences
 759        <commit> and <tag> objects that point at a <tree>.
 760
 761<commit-ish>::
 762        Indicates a commit or tag object name.  A
 763        command that takes a <commit-ish> argument ultimately wants to
 764        operate on a <commit> object but automatically dereferences
 765        <tag> objects that point at a <commit>.
 766
 767<type>::
 768        Indicates that an object type is required.
 769        Currently one of: `blob`, `tree`, `commit`, or `tag`.
 770
 771<file>::
 772        Indicates a filename - almost always relative to the
 773        root of the tree structure `GIT_INDEX_FILE` describes.
 774
 775Symbolic Identifiers
 776--------------------
 777Any Git command accepting any <object> can also use the following
 778symbolic notation:
 779
 780HEAD::
 781        indicates the head of the current branch.
 782
 783<tag>::
 784        a valid tag 'name'
 785        (i.e. a `refs/tags/<tag>` reference).
 786
 787<head>::
 788        a valid head 'name'
 789        (i.e. a `refs/heads/<head>` reference).
 790
 791For a more complete list of ways to spell object names, see
 792"SPECIFYING REVISIONS" section in linkgit:gitrevisions[7].
 793
 794
 795File/Directory Structure
 796------------------------
 797
 798Please see the linkgit:gitrepository-layout[5] document.
 799
 800Read linkgit:githooks[5] for more details about each hook.
 801
 802Higher level SCMs may provide and manage additional information in the
 803`$GIT_DIR`.
 804
 805
 806Terminology
 807-----------
 808Please see linkgit:gitglossary[7].
 809
 810
 811Environment Variables
 812---------------------
 813Various Git commands use the following environment variables:
 814
 815The Git Repository
 816~~~~~~~~~~~~~~~~~~
 817These environment variables apply to 'all' core Git commands. Nb: it
 818is worth noting that they may be used/overridden by SCMS sitting above
 819Git so take care if using a foreign front-end.
 820
 821'GIT_INDEX_FILE'::
 822        This environment allows the specification of an alternate
 823        index file. If not specified, the default of `$GIT_DIR/index`
 824        is used.
 825
 826'GIT_INDEX_VERSION'::
 827        This environment variable allows the specification of an index
 828        version for new repositories.  It won't affect existing index
 829        files.  By default index file version 2 or 3 is used. See
 830        linkgit:git-update-index[1] for more information.
 831
 832'GIT_OBJECT_DIRECTORY'::
 833        If the object storage directory is specified via this
 834        environment variable then the sha1 directories are created
 835        underneath - otherwise the default `$GIT_DIR/objects`
 836        directory is used.
 837
 838'GIT_ALTERNATE_OBJECT_DIRECTORIES'::
 839        Due to the immutable nature of Git objects, old objects can be
 840        archived into shared, read-only directories. This variable
 841        specifies a ":" separated (on Windows ";" separated) list
 842        of Git object directories which can be used to search for Git
 843        objects. New objects will not be written to these directories.
 844
 845'GIT_DIR'::
 846        If the 'GIT_DIR' environment variable is set then it
 847        specifies a path to use instead of the default `.git`
 848        for the base of the repository.
 849        The '--git-dir' command-line option also sets this value.
 850
 851'GIT_WORK_TREE'::
 852        Set the path to the root of the working tree.
 853        This can also be controlled by the '--work-tree' command-line
 854        option and the core.worktree configuration variable.
 855
 856'GIT_NAMESPACE'::
 857        Set the Git namespace; see linkgit:gitnamespaces[7] for details.
 858        The '--namespace' command-line option also sets this value.
 859
 860'GIT_CEILING_DIRECTORIES'::
 861        This should be a colon-separated list of absolute paths.  If
 862        set, it is a list of directories that Git should not chdir up
 863        into while looking for a repository directory (useful for
 864        excluding slow-loading network directories).  It will not
 865        exclude the current working directory or a GIT_DIR set on the
 866        command line or in the environment.  Normally, Git has to read
 867        the entries in this list and resolve any symlink that
 868        might be present in order to compare them with the current
 869        directory.  However, if even this access is slow, you
 870        can add an empty entry to the list to tell Git that the
 871        subsequent entries are not symlinks and needn't be resolved;
 872        e.g.,
 873        'GIT_CEILING_DIRECTORIES=/maybe/symlink::/very/slow/non/symlink'.
 874
 875'GIT_DISCOVERY_ACROSS_FILESYSTEM'::
 876        When run in a directory that does not have ".git" repository
 877        directory, Git tries to find such a directory in the parent
 878        directories to find the top of the working tree, but by default it
 879        does not cross filesystem boundaries.  This environment variable
 880        can be set to true to tell Git not to stop at filesystem
 881        boundaries.  Like 'GIT_CEILING_DIRECTORIES', this will not affect
 882        an explicit repository directory set via 'GIT_DIR' or on the
 883        command line.
 884
 885'GIT_COMMON_DIR'::
 886        If this variable is set to a path, non-worktree files that are
 887        normally in $GIT_DIR will be taken from this path
 888        instead. Worktree-specific files such as HEAD or index are
 889        taken from $GIT_DIR. See linkgit:gitrepository-layout[5] and
 890        linkgit:git-worktree[1] for
 891        details. This variable has lower precedence than other path
 892        variables such as GIT_INDEX_FILE, GIT_OBJECT_DIRECTORY...
 893
 894Git Commits
 895~~~~~~~~~~~
 896'GIT_AUTHOR_NAME'::
 897'GIT_AUTHOR_EMAIL'::
 898'GIT_AUTHOR_DATE'::
 899'GIT_COMMITTER_NAME'::
 900'GIT_COMMITTER_EMAIL'::
 901'GIT_COMMITTER_DATE'::
 902'EMAIL'::
 903        see linkgit:git-commit-tree[1]
 904
 905Git Diffs
 906~~~~~~~~~
 907'GIT_DIFF_OPTS'::
 908        Only valid setting is "--unified=??" or "-u??" to set the
 909        number of context lines shown when a unified diff is created.
 910        This takes precedence over any "-U" or "--unified" option
 911        value passed on the Git diff command line.
 912
 913'GIT_EXTERNAL_DIFF'::
 914        When the environment variable 'GIT_EXTERNAL_DIFF' is set, the
 915        program named by it is called, instead of the diff invocation
 916        described above.  For a path that is added, removed, or modified,
 917        'GIT_EXTERNAL_DIFF' is called with 7 parameters:
 918
 919        path old-file old-hex old-mode new-file new-hex new-mode
 920+
 921where:
 922
 923        <old|new>-file:: are files GIT_EXTERNAL_DIFF can use to read the
 924                         contents of <old|new>,
 925        <old|new>-hex:: are the 40-hexdigit SHA-1 hashes,
 926        <old|new>-mode:: are the octal representation of the file modes.
 927+
 928The file parameters can point at the user's working file
 929(e.g. `new-file` in "git-diff-files"), `/dev/null` (e.g. `old-file`
 930when a new file is added), or a temporary file (e.g. `old-file` in the
 931index).  'GIT_EXTERNAL_DIFF' should not worry about unlinking the
 932temporary file --- it is removed when 'GIT_EXTERNAL_DIFF' exits.
 933+
 934For a path that is unmerged, 'GIT_EXTERNAL_DIFF' is called with 1
 935parameter, <path>.
 936+
 937For each path 'GIT_EXTERNAL_DIFF' is called, two environment variables,
 938'GIT_DIFF_PATH_COUNTER' and 'GIT_DIFF_PATH_TOTAL' are set.
 939
 940'GIT_DIFF_PATH_COUNTER'::
 941        A 1-based counter incremented by one for every path.
 942
 943'GIT_DIFF_PATH_TOTAL'::
 944        The total number of paths.
 945
 946other
 947~~~~~
 948'GIT_MERGE_VERBOSITY'::
 949        A number controlling the amount of output shown by
 950        the recursive merge strategy.  Overrides merge.verbosity.
 951        See linkgit:git-merge[1]
 952
 953'GIT_PAGER'::
 954        This environment variable overrides `$PAGER`. If it is set
 955        to an empty string or to the value "cat", Git will not launch
 956        a pager.  See also the `core.pager` option in
 957        linkgit:git-config[1].
 958
 959'GIT_EDITOR'::
 960        This environment variable overrides `$EDITOR` and `$VISUAL`.
 961        It is used by several Git commands when, on interactive mode,
 962        an editor is to be launched. See also linkgit:git-var[1]
 963        and the `core.editor` option in linkgit:git-config[1].
 964
 965'GIT_SSH'::
 966'GIT_SSH_COMMAND'::
 967        If either of these environment variables is set then 'git fetch'
 968        and 'git push' will use the specified command instead of 'ssh'
 969        when they need to connect to a remote system.
 970        The command will be given exactly two or four arguments: the
 971        'username@host' (or just 'host') from the URL and the shell
 972        command to execute on that remote system, optionally preceded by
 973        '-p' (literally) and the 'port' from the URL when it specifies
 974        something other than the default SSH port.
 975+
 976`$GIT_SSH_COMMAND` takes precedence over `$GIT_SSH`, and is interpreted
 977by the shell, which allows additional arguments to be included.
 978`$GIT_SSH` on the other hand must be just the path to a program
 979(which can be a wrapper shell script, if additional arguments are
 980needed).
 981+
 982Usually it is easier to configure any desired options through your
 983personal `.ssh/config` file.  Please consult your ssh documentation
 984for further details.
 985
 986'GIT_ASKPASS'::
 987        If this environment variable is set, then Git commands which need to
 988        acquire passwords or passphrases (e.g. for HTTP or IMAP authentication)
 989        will call this program with a suitable prompt as command-line argument
 990        and read the password from its STDOUT. See also the 'core.askPass'
 991        option in linkgit:git-config[1].
 992
 993'GIT_TERMINAL_PROMPT'::
 994        If this environment variable is set to `0`, git will not prompt
 995        on the terminal (e.g., when asking for HTTP authentication).
 996
 997'GIT_CONFIG_NOSYSTEM'::
 998        Whether to skip reading settings from the system-wide
 999        `$(prefix)/etc/gitconfig` file.  This environment variable can
1000        be used along with `$HOME` and `$XDG_CONFIG_HOME` to create a
1001        predictable environment for a picky script, or you can set it
1002        temporarily to avoid using a buggy `/etc/gitconfig` file while
1003        waiting for someone with sufficient permissions to fix it.
1004
1005'GIT_FLUSH'::
1006        If this environment variable is set to "1", then commands such
1007        as 'git blame' (in incremental mode), 'git rev-list', 'git log',
1008        'git check-attr' and 'git check-ignore' will
1009        force a flush of the output stream after each record have been
1010        flushed. If this
1011        variable is set to "0", the output of these commands will be done
1012        using completely buffered I/O.   If this environment variable is
1013        not set, Git will choose buffered or record-oriented flushing
1014        based on whether stdout appears to be redirected to a file or not.
1015
1016'GIT_TRACE'::
1017        Enables general trace messages, e.g. alias expansion, built-in
1018        command execution and external command execution.
1019+
1020If this variable is set to "1", "2" or "true" (comparison
1021is case insensitive), trace messages will be printed to
1022stderr.
1023+
1024If the variable is set to an integer value greater than 2
1025and lower than 10 (strictly) then Git will interpret this
1026value as an open file descriptor and will try to write the
1027trace messages into this file descriptor.
1028+
1029Alternatively, if the variable is set to an absolute path
1030(starting with a '/' character), Git will interpret this
1031as a file path and will try to write the trace messages
1032into it.
1033+
1034Unsetting the variable, or setting it to empty, "0" or
1035"false" (case insensitive) disables trace messages.
1036
1037'GIT_TRACE_PACK_ACCESS'::
1038        Enables trace messages for all accesses to any packs. For each
1039        access, the pack file name and an offset in the pack is
1040        recorded. This may be helpful for troubleshooting some
1041        pack-related performance problems.
1042        See 'GIT_TRACE' for available trace output options.
1043
1044'GIT_TRACE_PACKET'::
1045        Enables trace messages for all packets coming in or out of a
1046        given program. This can help with debugging object negotiation
1047        or other protocol issues. Tracing is turned off at a packet
1048        starting with "PACK" (but see 'GIT_TRACE_PACKFILE' below).
1049        See 'GIT_TRACE' for available trace output options.
1050
1051'GIT_TRACE_PACKFILE'::
1052        Enables tracing of packfiles sent or received by a
1053        given program. Unlike other trace output, this trace is
1054        verbatim: no headers, and no quoting of binary data. You almost
1055        certainly want to direct into a file (e.g.,
1056        `GIT_TRACE_PACKFILE=/tmp/my.pack`) rather than displaying it on
1057        the terminal or mixing it with other trace output.
1058+
1059Note that this is currently only implemented for the client side
1060of clones and fetches.
1061
1062'GIT_TRACE_PERFORMANCE'::
1063        Enables performance related trace messages, e.g. total execution
1064        time of each Git command.
1065        See 'GIT_TRACE' for available trace output options.
1066
1067'GIT_TRACE_SETUP'::
1068        Enables trace messages printing the .git, working tree and current
1069        working directory after Git has completed its setup phase.
1070        See 'GIT_TRACE' for available trace output options.
1071
1072'GIT_TRACE_SHALLOW'::
1073        Enables trace messages that can help debugging fetching /
1074        cloning of shallow repositories.
1075        See 'GIT_TRACE' for available trace output options.
1076
1077'GIT_LITERAL_PATHSPECS'::
1078        Setting this variable to `1` will cause Git to treat all
1079        pathspecs literally, rather than as glob patterns. For example,
1080        running `GIT_LITERAL_PATHSPECS=1 git log -- '*.c'` will search
1081        for commits that touch the path `*.c`, not any paths that the
1082        glob `*.c` matches. You might want this if you are feeding
1083        literal paths to Git (e.g., paths previously given to you by
1084        `git ls-tree`, `--raw` diff output, etc).
1085
1086'GIT_GLOB_PATHSPECS'::
1087        Setting this variable to `1` will cause Git to treat all
1088        pathspecs as glob patterns (aka "glob" magic).
1089
1090'GIT_NOGLOB_PATHSPECS'::
1091        Setting this variable to `1` will cause Git to treat all
1092        pathspecs as literal (aka "literal" magic).
1093
1094'GIT_ICASE_PATHSPECS'::
1095        Setting this variable to `1` will cause Git to treat all
1096        pathspecs as case-insensitive.
1097
1098'GIT_REFLOG_ACTION'::
1099        When a ref is updated, reflog entries are created to keep
1100        track of the reason why the ref was updated (which is
1101        typically the name of the high-level command that updated
1102        the ref), in addition to the old and new values of the ref.
1103        A scripted Porcelain command can use set_reflog_action
1104        helper function in `git-sh-setup` to set its name to this
1105        variable when it is invoked as the top level command by the
1106        end user, to be recorded in the body of the reflog.
1107
1108'GIT_REF_PARANOIA'::
1109        If set to `1`, include broken or badly named refs when iterating
1110        over lists of refs. In a normal, non-corrupted repository, this
1111        does nothing. However, enabling it may help git to detect and
1112        abort some operations in the presence of broken refs. Git sets
1113        this variable automatically when performing destructive
1114        operations like linkgit:git-prune[1]. You should not need to set
1115        it yourself unless you want to be paranoid about making sure
1116        an operation has touched every ref (e.g., because you are
1117        cloning a repository to make a backup).
1118
1119'GIT_ALLOW_PROTOCOL'::
1120        If set, provide a colon-separated list of protocols which are
1121        allowed to be used with fetch/push/clone. This is useful to
1122        restrict recursive submodule initialization from an untrusted
1123        repository. Any protocol not mentioned will be disallowed (i.e.,
1124        this is a whitelist, not a blacklist). If the variable is not
1125        set at all, all protocols are enabled.  The protocol names
1126        currently used by git are:
1127
1128          - `file`: any local file-based path (including `file://` URLs,
1129            or local paths)
1130
1131          - `git`: the anonymous git protocol over a direct TCP
1132            connection (or proxy, if configured)
1133
1134          - `ssh`: git over ssh (including `host:path` syntax,
1135            `ssh://`, etc).
1136
1137          - `http`: git over http, both "smart http" and "dumb http".
1138            Note that this does _not_ include `https`; if you want both,
1139            you should specify both as `http:https`.
1140
1141          - any external helpers are named by their protocol (e.g., use
1142            `hg` to allow the `git-remote-hg` helper)
1143
1144
1145Discussion[[Discussion]]
1146------------------------
1147
1148More detail on the following is available from the
1149link:user-manual.html#git-concepts[Git concepts chapter of the
1150user-manual] and linkgit:gitcore-tutorial[7].
1151
1152A Git project normally consists of a working directory with a ".git"
1153subdirectory at the top level.  The .git directory contains, among other
1154things, a compressed object database representing the complete history
1155of the project, an "index" file which links that history to the current
1156contents of the working tree, and named pointers into that history such
1157as tags and branch heads.
1158
1159The object database contains objects of three main types: blobs, which
1160hold file data; trees, which point to blobs and other trees to build up
1161directory hierarchies; and commits, which each reference a single tree
1162and some number of parent commits.
1163
1164The commit, equivalent to what other systems call a "changeset" or
1165"version", represents a step in the project's history, and each parent
1166represents an immediately preceding step.  Commits with more than one
1167parent represent merges of independent lines of development.
1168
1169All objects are named by the SHA-1 hash of their contents, normally
1170written as a string of 40 hex digits.  Such names are globally unique.
1171The entire history leading up to a commit can be vouched for by signing
1172just that commit.  A fourth object type, the tag, is provided for this
1173purpose.
1174
1175When first created, objects are stored in individual files, but for
1176efficiency may later be compressed together into "pack files".
1177
1178Named pointers called refs mark interesting points in history.  A ref
1179may contain the SHA-1 name of an object or the name of another ref.  Refs
1180with names beginning `ref/head/` contain the SHA-1 name of the most
1181recent commit (or "head") of a branch under development.  SHA-1 names of
1182tags of interest are stored under `ref/tags/`.  A special ref named
1183`HEAD` contains the name of the currently checked-out branch.
1184
1185The index file is initialized with a list of all paths and, for each
1186path, a blob object and a set of attributes.  The blob object represents
1187the contents of the file as of the head of the current branch.  The
1188attributes (last modified time, size, etc.) are taken from the
1189corresponding file in the working tree.  Subsequent changes to the
1190working tree can be found by comparing these attributes.  The index may
1191be updated with new content, and new commits may be created from the
1192content stored in the index.
1193
1194The index is also capable of storing multiple entries (called "stages")
1195for a given pathname.  These stages are used to hold the various
1196unmerged version of a file when a merge is in progress.
1197
1198FURTHER DOCUMENTATION
1199---------------------
1200
1201See the references in the "description" section to get started
1202using Git.  The following is probably more detail than necessary
1203for a first-time user.
1204
1205The link:user-manual.html#git-concepts[Git concepts chapter of the
1206user-manual] and linkgit:gitcore-tutorial[7] both provide
1207introductions to the underlying Git architecture.
1208
1209See linkgit:gitworkflows[7] for an overview of recommended workflows.
1210
1211See also the link:howto-index.html[howto] documents for some useful
1212examples.
1213
1214The internals are documented in the
1215link:technical/api-index.html[Git API documentation].
1216
1217Users migrating from CVS may also want to
1218read linkgit:gitcvs-migration[7].
1219
1220
1221Authors
1222-------
1223Git was started by Linus Torvalds, and is currently maintained by Junio
1224C Hamano. Numerous contributions have come from the Git mailing list
1225<git@vger.kernel.org>.  http://www.openhub.net/p/git/contributors/summary
1226gives you a more complete list of contributors.
1227
1228If you have a clone of git.git itself, the
1229output of linkgit:git-shortlog[1] and linkgit:git-blame[1] can show you
1230the authors for specific parts of the project.
1231
1232Reporting Bugs
1233--------------
1234
1235Report bugs to the Git mailing list <git@vger.kernel.org> where the
1236development and maintenance is primarily done.  You do not have to be
1237subscribed to the list to send a message there.
1238
1239SEE ALSO
1240--------
1241linkgit:gittutorial[7], linkgit:gittutorial-2[7],
1242linkgit:giteveryday[7], linkgit:gitcvs-migration[7],
1243linkgit:gitglossary[7], linkgit:gitcore-tutorial[7],
1244linkgit:gitcli[7], link:user-manual.html[The Git User's Manual],
1245linkgit:gitworkflows[7]
1246
1247GIT
1248---
1249Part of the linkgit:git[1] suite