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