Documentation / git.txton commit Merge branch 'cb/maint-rev-list-verify-object' (abce5de)
   1git(1)
   2======
   3
   4NAME
   5----
   6git - the stupid content tracker
   7
   8
   9SYNOPSIS
  10--------
  11[verse]
  12'git' [--version] [--help] [-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
  25link:everyday.html[Everyday Git] for a useful minimum set of commands, and
  26"man git-commandname" for documentation of each command.  CVS users may
  27also want to read linkgit:gitcvs-migration[7].  See
  28the link:user-manual.html[Git User's Manual] for a more in-depth
  29introduction.
  30
  31The '<command>' is either a name of a Git command (see below) or an alias
  32as defined in the configuration file (see linkgit:git-config[1]).
  33
  34Formatted and hyperlinked version of the latest git
  35documentation can be viewed at
  36`http://www.kernel.org/pub/software/scm/git/docs/`.
  37
  38ifdef::stalenotes[]
  39[NOTE]
  40============
  41
  42You are reading the documentation for the latest (possibly
  43unreleased) version of git, that is available from 'master'
  44branch of the `git.git` repository.
  45Documentation for older releases are available here:
  46
  47* link:v1.7.9.1/git.html[documentation for release 1.7.9.1]
  48
  49* release notes for
  50  link:RelNotes/1.7.9.1.txt[1.7.9.1],
  51  link:RelNotes/1.7.9.txt[1.7.9].
  52
  53* link:v1.7.8.4/git.html[documentation for release 1.7.8.4]
  54
  55* release notes for
  56  link:RelNotes/1.7.8.4.txt[1.7.8.4],
  57  link:RelNotes/1.7.8.3.txt[1.7.8.3],
  58  link:RelNotes/1.7.8.2.txt[1.7.8.2],
  59  link:RelNotes/1.7.8.1.txt[1.7.8.1],
  60  link:RelNotes/1.7.8.txt[1.7.8].
  61
  62* link:v1.7.7.6/git.html[documentation for release 1.7.7.6]
  63
  64* release notes for
  65  link:RelNotes/1.7.7.6.txt[1.7.7.6],
  66  link:RelNotes/1.7.7.5.txt[1.7.7.5],
  67  link:RelNotes/1.7.7.4.txt[1.7.7.4],
  68  link:RelNotes/1.7.7.3.txt[1.7.7.3],
  69  link:RelNotes/1.7.7.2.txt[1.7.7.2],
  70  link:RelNotes/1.7.7.1.txt[1.7.7.1],
  71  link:RelNotes/1.7.7.txt[1.7.7].
  72
  73* link:v1.7.6.6/git.html[documentation for release 1.7.6.6]
  74
  75* release notes for
  76  link:RelNotes/1.7.6.6.txt[1.7.6.6],
  77  link:RelNotes/1.7.6.5.txt[1.7.6.5],
  78  link:RelNotes/1.7.6.4.txt[1.7.6.4],
  79  link:RelNotes/1.7.6.3.txt[1.7.6.3],
  80  link:RelNotes/1.7.6.2.txt[1.7.6.2],
  81  link:RelNotes/1.7.6.1.txt[1.7.6.1],
  82  link:RelNotes/1.7.6.txt[1.7.6].
  83
  84* link:v1.7.5.4/git.html[documentation for release 1.7.5.4]
  85
  86* release notes for
  87  link:RelNotes/1.7.5.4.txt[1.7.5.4],
  88  link:RelNotes/1.7.5.3.txt[1.7.5.3],
  89  link:RelNotes/1.7.5.2.txt[1.7.5.2],
  90  link:RelNotes/1.7.5.1.txt[1.7.5.1],
  91  link:RelNotes/1.7.5.txt[1.7.5].
  92
  93* link:v1.7.4.5/git.html[documentation for release 1.7.4.5]
  94
  95* release notes for
  96  link:RelNotes/1.7.4.5.txt[1.7.4.5],
  97  link:RelNotes/1.7.4.4.txt[1.7.4.4],
  98  link:RelNotes/1.7.4.3.txt[1.7.4.3],
  99  link:RelNotes/1.7.4.2.txt[1.7.4.2],
 100  link:RelNotes/1.7.4.1.txt[1.7.4.1],
 101  link:RelNotes/1.7.4.txt[1.7.4].
 102
 103* link:v1.7.3.5/git.html[documentation for release 1.7.3.5]
 104
 105* release notes for
 106  link:RelNotes/1.7.3.5.txt[1.7.3.5],
 107  link:RelNotes/1.7.3.4.txt[1.7.3.4],
 108  link:RelNotes/1.7.3.3.txt[1.7.3.3],
 109  link:RelNotes/1.7.3.2.txt[1.7.3.2],
 110  link:RelNotes/1.7.3.1.txt[1.7.3.1],
 111  link:RelNotes/1.7.3.txt[1.7.3].
 112
 113* link:v1.7.2.5/git.html[documentation for release 1.7.2.5]
 114
 115* release notes for
 116  link:RelNotes/1.7.2.5.txt[1.7.2.5],
 117  link:RelNotes/1.7.2.4.txt[1.7.2.4],
 118  link:RelNotes/1.7.2.3.txt[1.7.2.3],
 119  link:RelNotes/1.7.2.2.txt[1.7.2.2],
 120  link:RelNotes/1.7.2.1.txt[1.7.2.1],
 121  link:RelNotes/1.7.2.txt[1.7.2].
 122
 123* link:v1.7.1.4/git.html[documentation for release 1.7.1.4]
 124
 125* release notes for
 126  link:RelNotes/1.7.1.4.txt[1.7.1.4],
 127  link:RelNotes/1.7.1.3.txt[1.7.1.3],
 128  link:RelNotes/1.7.1.2.txt[1.7.1.2],
 129  link:RelNotes/1.7.1.1.txt[1.7.1.1],
 130  link:RelNotes/1.7.1.txt[1.7.1].
 131
 132* link:v1.7.0.9/git.html[documentation for release 1.7.0.9]
 133
 134* release notes for
 135  link:RelNotes/1.7.0.9.txt[1.7.0.9],
 136  link:RelNotes/1.7.0.8.txt[1.7.0.8],
 137  link:RelNotes/1.7.0.7.txt[1.7.0.7],
 138  link:RelNotes/1.7.0.6.txt[1.7.0.6],
 139  link:RelNotes/1.7.0.5.txt[1.7.0.5],
 140  link:RelNotes/1.7.0.4.txt[1.7.0.4],
 141  link:RelNotes/1.7.0.3.txt[1.7.0.3],
 142  link:RelNotes/1.7.0.2.txt[1.7.0.2],
 143  link:RelNotes/1.7.0.1.txt[1.7.0.1],
 144  link:RelNotes/1.7.0.txt[1.7.0].
 145
 146* link:v1.6.6.3/git.html[documentation for release 1.6.6.3]
 147
 148* release notes for
 149  link:RelNotes/1.6.6.3.txt[1.6.6.3],
 150  link:RelNotes/1.6.6.2.txt[1.6.6.2],
 151  link:RelNotes/1.6.6.1.txt[1.6.6.1],
 152  link:RelNotes/1.6.6.txt[1.6.6].
 153
 154* link:v1.6.5.9/git.html[documentation for release 1.6.5.9]
 155
 156* release notes for
 157  link:RelNotes/1.6.5.9.txt[1.6.5.9],
 158  link:RelNotes/1.6.5.8.txt[1.6.5.8],
 159  link:RelNotes/1.6.5.7.txt[1.6.5.7],
 160  link:RelNotes/1.6.5.6.txt[1.6.5.6],
 161  link:RelNotes/1.6.5.5.txt[1.6.5.5],
 162  link:RelNotes/1.6.5.4.txt[1.6.5.4],
 163  link:RelNotes/1.6.5.3.txt[1.6.5.3],
 164  link:RelNotes/1.6.5.2.txt[1.6.5.2],
 165  link:RelNotes/1.6.5.1.txt[1.6.5.1],
 166  link:RelNotes/1.6.5.txt[1.6.5].
 167
 168* link:v1.6.4.5/git.html[documentation for release 1.6.4.5]
 169
 170* release notes for
 171  link:RelNotes/1.6.4.5.txt[1.6.4.5],
 172  link:RelNotes/1.6.4.4.txt[1.6.4.4],
 173  link:RelNotes/1.6.4.3.txt[1.6.4.3],
 174  link:RelNotes/1.6.4.2.txt[1.6.4.2],
 175  link:RelNotes/1.6.4.1.txt[1.6.4.1],
 176  link:RelNotes/1.6.4.txt[1.6.4].
 177
 178* link:v1.6.3.4/git.html[documentation for release 1.6.3.4]
 179
 180* release notes for
 181  link:RelNotes/1.6.3.4.txt[1.6.3.4],
 182  link:RelNotes/1.6.3.3.txt[1.6.3.3],
 183  link:RelNotes/1.6.3.2.txt[1.6.3.2],
 184  link:RelNotes/1.6.3.1.txt[1.6.3.1],
 185  link:RelNotes/1.6.3.txt[1.6.3].
 186
 187* release notes for
 188  link:RelNotes/1.6.2.5.txt[1.6.2.5],
 189  link:RelNotes/1.6.2.4.txt[1.6.2.4],
 190  link:RelNotes/1.6.2.3.txt[1.6.2.3],
 191  link:RelNotes/1.6.2.2.txt[1.6.2.2],
 192  link:RelNotes/1.6.2.1.txt[1.6.2.1],
 193  link:RelNotes/1.6.2.txt[1.6.2].
 194
 195* link:v1.6.1.3/git.html[documentation for release 1.6.1.3]
 196
 197* release notes for
 198  link:RelNotes/1.6.1.3.txt[1.6.1.3],
 199  link:RelNotes/1.6.1.2.txt[1.6.1.2],
 200  link:RelNotes/1.6.1.1.txt[1.6.1.1],
 201  link:RelNotes/1.6.1.txt[1.6.1].
 202
 203* link:v1.6.0.6/git.html[documentation for release 1.6.0.6]
 204
 205* release notes for
 206  link:RelNotes/1.6.0.6.txt[1.6.0.6],
 207  link:RelNotes/1.6.0.5.txt[1.6.0.5],
 208  link:RelNotes/1.6.0.4.txt[1.6.0.4],
 209  link:RelNotes/1.6.0.3.txt[1.6.0.3],
 210  link:RelNotes/1.6.0.2.txt[1.6.0.2],
 211  link:RelNotes/1.6.0.1.txt[1.6.0.1],
 212  link:RelNotes/1.6.0.txt[1.6.0].
 213
 214* link:v1.5.6.6/git.html[documentation for release 1.5.6.6]
 215
 216* release notes for
 217  link:RelNotes/1.5.6.6.txt[1.5.6.6],
 218  link:RelNotes/1.5.6.5.txt[1.5.6.5],
 219  link:RelNotes/1.5.6.4.txt[1.5.6.4],
 220  link:RelNotes/1.5.6.3.txt[1.5.6.3],
 221  link:RelNotes/1.5.6.2.txt[1.5.6.2],
 222  link:RelNotes/1.5.6.1.txt[1.5.6.1],
 223  link:RelNotes/1.5.6.txt[1.5.6].
 224
 225* link:v1.5.5.6/git.html[documentation for release 1.5.5.6]
 226
 227* release notes for
 228  link:RelNotes/1.5.5.6.txt[1.5.5.6],
 229  link:RelNotes/1.5.5.5.txt[1.5.5.5],
 230  link:RelNotes/1.5.5.4.txt[1.5.5.4],
 231  link:RelNotes/1.5.5.3.txt[1.5.5.3],
 232  link:RelNotes/1.5.5.2.txt[1.5.5.2],
 233  link:RelNotes/1.5.5.1.txt[1.5.5.1],
 234  link:RelNotes/1.5.5.txt[1.5.5].
 235
 236* link:v1.5.4.7/git.html[documentation for release 1.5.4.7]
 237
 238* release notes for
 239  link:RelNotes/1.5.4.7.txt[1.5.4.7],
 240  link:RelNotes/1.5.4.6.txt[1.5.4.6],
 241  link:RelNotes/1.5.4.5.txt[1.5.4.5],
 242  link:RelNotes/1.5.4.4.txt[1.5.4.4],
 243  link:RelNotes/1.5.4.3.txt[1.5.4.3],
 244  link:RelNotes/1.5.4.2.txt[1.5.4.2],
 245  link:RelNotes/1.5.4.1.txt[1.5.4.1],
 246  link:RelNotes/1.5.4.txt[1.5.4].
 247
 248* link:v1.5.3.8/git.html[documentation for release 1.5.3.8]
 249
 250* release notes for
 251  link:RelNotes/1.5.3.8.txt[1.5.3.8],
 252  link:RelNotes/1.5.3.7.txt[1.5.3.7],
 253  link:RelNotes/1.5.3.6.txt[1.5.3.6],
 254  link:RelNotes/1.5.3.5.txt[1.5.3.5],
 255  link:RelNotes/1.5.3.4.txt[1.5.3.4],
 256  link:RelNotes/1.5.3.3.txt[1.5.3.3],
 257  link:RelNotes/1.5.3.2.txt[1.5.3.2],
 258  link:RelNotes/1.5.3.1.txt[1.5.3.1],
 259  link:RelNotes/1.5.3.txt[1.5.3].
 260
 261* link:v1.5.2.5/git.html[documentation for release 1.5.2.5]
 262
 263* release notes for
 264  link:RelNotes/1.5.2.5.txt[1.5.2.5],
 265  link:RelNotes/1.5.2.4.txt[1.5.2.4],
 266  link:RelNotes/1.5.2.3.txt[1.5.2.3],
 267  link:RelNotes/1.5.2.2.txt[1.5.2.2],
 268  link:RelNotes/1.5.2.1.txt[1.5.2.1],
 269  link:RelNotes/1.5.2.txt[1.5.2].
 270
 271* link:v1.5.1.6/git.html[documentation for release 1.5.1.6]
 272
 273* release notes for
 274  link:RelNotes/1.5.1.6.txt[1.5.1.6],
 275  link:RelNotes/1.5.1.5.txt[1.5.1.5],
 276  link:RelNotes/1.5.1.4.txt[1.5.1.4],
 277  link:RelNotes/1.5.1.3.txt[1.5.1.3],
 278  link:RelNotes/1.5.1.2.txt[1.5.1.2],
 279  link:RelNotes/1.5.1.1.txt[1.5.1.1],
 280  link:RelNotes/1.5.1.txt[1.5.1].
 281
 282* link:v1.5.0.7/git.html[documentation for release 1.5.0.7]
 283
 284* release notes for
 285  link:RelNotes/1.5.0.7.txt[1.5.0.7],
 286  link:RelNotes/1.5.0.6.txt[1.5.0.6],
 287  link:RelNotes/1.5.0.5.txt[1.5.0.5],
 288  link:RelNotes/1.5.0.3.txt[1.5.0.3],
 289  link:RelNotes/1.5.0.2.txt[1.5.0.2],
 290  link:RelNotes/1.5.0.1.txt[1.5.0.1],
 291  link:RelNotes/1.5.0.txt[1.5.0].
 292
 293* documentation for release link:v1.4.4.4/git.html[1.4.4.4],
 294  link:v1.3.3/git.html[1.3.3],
 295  link:v1.2.6/git.html[1.2.6],
 296  link:v1.0.13/git.html[1.0.13].
 297
 298============
 299
 300endif::stalenotes[]
 301
 302OPTIONS
 303-------
 304--version::
 305        Prints the git suite version that the 'git' program came from.
 306
 307--help::
 308        Prints the synopsis and a list of the most commonly used
 309        commands. If the option '--all' or '-a' is given then all
 310        available commands are printed. If a git command is named this
 311        option will bring up the manual page for that command.
 312+
 313Other options are available to control how the manual page is
 314displayed. See linkgit:git-help[1] for more information,
 315because `git --help ...` is converted internally into `git
 316help ...`.
 317
 318-c <name>=<value>::
 319        Pass a configuration parameter to the command. The value
 320        given will override values from configuration files.
 321        The <name> is expected in the same format as listed by
 322        'git config' (subkeys separated by dots).
 323
 324--exec-path[=<path>]::
 325        Path to wherever your core git programs are installed.
 326        This can also be controlled by setting the GIT_EXEC_PATH
 327        environment variable. If no path is given, 'git' will print
 328        the current setting and then exit.
 329
 330--html-path::
 331        Print the path, without trailing slash, where git's HTML
 332        documentation is installed and exit.
 333
 334--man-path::
 335        Print the manpath (see `man(1)`) for the man pages for
 336        this version of git and exit.
 337
 338--info-path::
 339        Print the path where the Info files documenting this
 340        version of git are installed and exit.
 341
 342-p::
 343--paginate::
 344        Pipe all output into 'less' (or if set, $PAGER) if standard
 345        output is a terminal.  This overrides the `pager.<cmd>`
 346        configuration options (see the "Configuration Mechanism" section
 347        below).
 348
 349--no-pager::
 350        Do not pipe git output into a pager.
 351
 352--git-dir=<path>::
 353        Set the path to the repository. This can also be controlled by
 354        setting the GIT_DIR environment variable. It can be an absolute
 355        path or relative path to current working directory.
 356
 357--work-tree=<path>::
 358        Set the path to the working tree. It can be an absolute path
 359        or a path relative to the current working directory.
 360        This can also be controlled by setting the GIT_WORK_TREE
 361        environment variable and the core.worktree configuration
 362        variable (see core.worktree in linkgit:git-config[1] for a
 363        more detailed discussion).
 364
 365--namespace=<path>::
 366        Set the git namespace.  See linkgit:gitnamespaces[7] for more
 367        details.  Equivalent to setting the `GIT_NAMESPACE` environment
 368        variable.
 369
 370--bare::
 371        Treat the repository as a bare repository.  If GIT_DIR
 372        environment is not set, it is set to the current working
 373        directory.
 374
 375--no-replace-objects::
 376        Do not use replacement refs to replace git objects. See
 377        linkgit:git-replace[1] for more information.
 378
 379
 380FURTHER DOCUMENTATION
 381---------------------
 382
 383See the references above to get started using git.  The following is
 384probably more detail than necessary for a first-time user.
 385
 386The link:user-manual.html#git-concepts[git concepts chapter of the
 387user-manual] and linkgit:gitcore-tutorial[7] both provide
 388introductions to the underlying git architecture.
 389
 390See linkgit:gitworkflows[7] for an overview of recommended workflows.
 391
 392See also the link:howto-index.html[howto] documents for some useful
 393examples.
 394
 395The internals are documented in the
 396link:technical/api-index.html[GIT API documentation].
 397
 398GIT COMMANDS
 399------------
 400
 401We divide git into high level ("porcelain") commands and low level
 402("plumbing") commands.
 403
 404High-level commands (porcelain)
 405-------------------------------
 406
 407We separate the porcelain commands into the main commands and some
 408ancillary user utilities.
 409
 410Main porcelain commands
 411~~~~~~~~~~~~~~~~~~~~~~~
 412
 413include::cmds-mainporcelain.txt[]
 414
 415Ancillary Commands
 416~~~~~~~~~~~~~~~~~~
 417Manipulators:
 418
 419include::cmds-ancillarymanipulators.txt[]
 420
 421Interrogators:
 422
 423include::cmds-ancillaryinterrogators.txt[]
 424
 425
 426Interacting with Others
 427~~~~~~~~~~~~~~~~~~~~~~~
 428
 429These commands are to interact with foreign SCM and with other
 430people via patch over e-mail.
 431
 432include::cmds-foreignscminterface.txt[]
 433
 434
 435Low-level commands (plumbing)
 436-----------------------------
 437
 438Although git includes its
 439own porcelain layer, its low-level commands are sufficient to support
 440development of alternative porcelains.  Developers of such porcelains
 441might start by reading about linkgit:git-update-index[1] and
 442linkgit:git-read-tree[1].
 443
 444The interface (input, output, set of options and the semantics)
 445to these low-level commands are meant to be a lot more stable
 446than Porcelain level commands, because these commands are
 447primarily for scripted use.  The interface to Porcelain commands
 448on the other hand are subject to change in order to improve the
 449end user experience.
 450
 451The following description divides
 452the low-level commands into commands that manipulate objects (in
 453the repository, index, and working tree), commands that interrogate and
 454compare objects, and commands that move objects and references between
 455repositories.
 456
 457
 458Manipulation commands
 459~~~~~~~~~~~~~~~~~~~~~
 460
 461include::cmds-plumbingmanipulators.txt[]
 462
 463
 464Interrogation commands
 465~~~~~~~~~~~~~~~~~~~~~~
 466
 467include::cmds-plumbinginterrogators.txt[]
 468
 469In general, the interrogate commands do not touch the files in
 470the working tree.
 471
 472
 473Synching repositories
 474~~~~~~~~~~~~~~~~~~~~~
 475
 476include::cmds-synchingrepositories.txt[]
 477
 478The following are helper commands used by the above; end users
 479typically do not use them directly.
 480
 481include::cmds-synchelpers.txt[]
 482
 483
 484Internal helper commands
 485~~~~~~~~~~~~~~~~~~~~~~~~
 486
 487These are internal helper commands used by other commands; end
 488users typically do not use them directly.
 489
 490include::cmds-purehelpers.txt[]
 491
 492
 493Configuration Mechanism
 494-----------------------
 495
 496Starting from 0.99.9 (actually mid 0.99.8.GIT), `.git/config` file
 497is used to hold per-repository configuration options.  It is a
 498simple text file modeled after `.ini` format familiar to some
 499people.  Here is an example:
 500
 501------------
 502#
 503# A '#' or ';' character indicates a comment.
 504#
 505
 506; core variables
 507[core]
 508        ; Don't trust file modes
 509        filemode = false
 510
 511; user identity
 512[user]
 513        name = "Junio C Hamano"
 514        email = "junkio@twinsun.com"
 515
 516------------
 517
 518Various commands read from the configuration file and adjust
 519their operation accordingly.  See linkgit:git-config[1] for a
 520list.
 521
 522
 523Identifier Terminology
 524----------------------
 525<object>::
 526        Indicates the object name for any type of object.
 527
 528<blob>::
 529        Indicates a blob object name.
 530
 531<tree>::
 532        Indicates a tree object name.
 533
 534<commit>::
 535        Indicates a commit object name.
 536
 537<tree-ish>::
 538        Indicates a tree, commit or tag object name.  A
 539        command that takes a <tree-ish> argument ultimately wants to
 540        operate on a <tree> object but automatically dereferences
 541        <commit> and <tag> objects that point at a <tree>.
 542
 543<commit-ish>::
 544        Indicates a commit or tag object name.  A
 545        command that takes a <commit-ish> argument ultimately wants to
 546        operate on a <commit> object but automatically dereferences
 547        <tag> objects that point at a <commit>.
 548
 549<type>::
 550        Indicates that an object type is required.
 551        Currently one of: `blob`, `tree`, `commit`, or `tag`.
 552
 553<file>::
 554        Indicates a filename - almost always relative to the
 555        root of the tree structure `GIT_INDEX_FILE` describes.
 556
 557Symbolic Identifiers
 558--------------------
 559Any git command accepting any <object> can also use the following
 560symbolic notation:
 561
 562HEAD::
 563        indicates the head of the current branch.
 564
 565<tag>::
 566        a valid tag 'name'
 567        (i.e. a `refs/tags/<tag>` reference).
 568
 569<head>::
 570        a valid head 'name'
 571        (i.e. a `refs/heads/<head>` reference).
 572
 573For a more complete list of ways to spell object names, see
 574"SPECIFYING REVISIONS" section in linkgit:gitrevisions[7].
 575
 576
 577File/Directory Structure
 578------------------------
 579
 580Please see the linkgit:gitrepository-layout[5] document.
 581
 582Read linkgit:githooks[5] for more details about each hook.
 583
 584Higher level SCMs may provide and manage additional information in the
 585`$GIT_DIR`.
 586
 587
 588Terminology
 589-----------
 590Please see linkgit:gitglossary[7].
 591
 592
 593Environment Variables
 594---------------------
 595Various git commands use the following environment variables:
 596
 597The git Repository
 598~~~~~~~~~~~~~~~~~~
 599These environment variables apply to 'all' core git commands. Nb: it
 600is worth noting that they may be used/overridden by SCMS sitting above
 601git so take care if using Cogito etc.
 602
 603'GIT_INDEX_FILE'::
 604        This environment allows the specification of an alternate
 605        index file. If not specified, the default of `$GIT_DIR/index`
 606        is used.
 607
 608'GIT_OBJECT_DIRECTORY'::
 609        If the object storage directory is specified via this
 610        environment variable then the sha1 directories are created
 611        underneath - otherwise the default `$GIT_DIR/objects`
 612        directory is used.
 613
 614'GIT_ALTERNATE_OBJECT_DIRECTORIES'::
 615        Due to the immutable nature of git objects, old objects can be
 616        archived into shared, read-only directories. This variable
 617        specifies a ":" separated (on Windows ";" separated) list
 618        of git object directories which can be used to search for git
 619        objects. New objects will not be written to these directories.
 620
 621'GIT_DIR'::
 622        If the 'GIT_DIR' environment variable is set then it
 623        specifies a path to use instead of the default `.git`
 624        for the base of the repository.
 625
 626'GIT_WORK_TREE'::
 627        Set the path to the working tree.  The value will not be
 628        used in combination with repositories found automatically in
 629        a .git directory (i.e. $GIT_DIR is not set).
 630        This can also be controlled by the '--work-tree' command line
 631        option and the core.worktree configuration variable.
 632
 633'GIT_NAMESPACE'::
 634        Set the git namespace; see linkgit:gitnamespaces[7] for details.
 635        The '--namespace' command-line option also sets this value.
 636
 637'GIT_CEILING_DIRECTORIES'::
 638        This should be a colon-separated list of absolute paths.
 639        If set, it is a list of directories that git should not chdir
 640        up into while looking for a repository directory.
 641        It will not exclude the current working directory or
 642        a GIT_DIR set on the command line or in the environment.
 643        (Useful for excluding slow-loading network directories.)
 644
 645'GIT_DISCOVERY_ACROSS_FILESYSTEM'::
 646        When run in a directory that does not have ".git" repository
 647        directory, git tries to find such a directory in the parent
 648        directories to find the top of the working tree, but by default it
 649        does not cross filesystem boundaries.  This environment variable
 650        can be set to true to tell git not to stop at filesystem
 651        boundaries.  Like 'GIT_CEILING_DIRECTORIES', this will not affect
 652        an explicit repository directory set via 'GIT_DIR' or on the
 653        command line.
 654
 655git Commits
 656~~~~~~~~~~~
 657'GIT_AUTHOR_NAME'::
 658'GIT_AUTHOR_EMAIL'::
 659'GIT_AUTHOR_DATE'::
 660'GIT_COMMITTER_NAME'::
 661'GIT_COMMITTER_EMAIL'::
 662'GIT_COMMITTER_DATE'::
 663'EMAIL'::
 664        see linkgit:git-commit-tree[1]
 665
 666git Diffs
 667~~~~~~~~~
 668'GIT_DIFF_OPTS'::
 669        Only valid setting is "--unified=??" or "-u??" to set the
 670        number of context lines shown when a unified diff is created.
 671        This takes precedence over any "-U" or "--unified" option
 672        value passed on the git diff command line.
 673
 674'GIT_EXTERNAL_DIFF'::
 675        When the environment variable 'GIT_EXTERNAL_DIFF' is set, the
 676        program named by it is called, instead of the diff invocation
 677        described above.  For a path that is added, removed, or modified,
 678        'GIT_EXTERNAL_DIFF' is called with 7 parameters:
 679
 680        path old-file old-hex old-mode new-file new-hex new-mode
 681+
 682where:
 683
 684        <old|new>-file:: are files GIT_EXTERNAL_DIFF can use to read the
 685                         contents of <old|new>,
 686        <old|new>-hex:: are the 40-hexdigit SHA1 hashes,
 687        <old|new>-mode:: are the octal representation of the file modes.
 688+
 689The file parameters can point at the user's working file
 690(e.g. `new-file` in "git-diff-files"), `/dev/null` (e.g. `old-file`
 691when a new file is added), or a temporary file (e.g. `old-file` in the
 692index).  'GIT_EXTERNAL_DIFF' should not worry about unlinking the
 693temporary file --- it is removed when 'GIT_EXTERNAL_DIFF' exits.
 694+
 695For a path that is unmerged, 'GIT_EXTERNAL_DIFF' is called with 1
 696parameter, <path>.
 697
 698other
 699~~~~~
 700'GIT_MERGE_VERBOSITY'::
 701        A number controlling the amount of output shown by
 702        the recursive merge strategy.  Overrides merge.verbosity.
 703        See linkgit:git-merge[1]
 704
 705'GIT_PAGER'::
 706        This environment variable overrides `$PAGER`. If it is set
 707        to an empty string or to the value "cat", git will not launch
 708        a pager.  See also the `core.pager` option in
 709        linkgit:git-config[1].
 710
 711'GIT_SSH'::
 712        If this environment variable is set then 'git fetch'
 713        and 'git push' will use this command instead
 714        of 'ssh' when they need to connect to a remote system.
 715        The '$GIT_SSH' command will be given exactly two arguments:
 716        the 'username@host' (or just 'host') from the URL and the
 717        shell command to execute on that remote system.
 718+
 719To pass options to the program that you want to list in GIT_SSH
 720you will need to wrap the program and options into a shell script,
 721then set GIT_SSH to refer to the shell script.
 722+
 723Usually it is easier to configure any desired options through your
 724personal `.ssh/config` file.  Please consult your ssh documentation
 725for further details.
 726
 727'GIT_ASKPASS'::
 728        If this environment variable is set, then git commands which need to
 729        acquire passwords or passphrases (e.g. for HTTP or IMAP authentication)
 730        will call this program with a suitable prompt as command line argument
 731        and read the password from its STDOUT. See also the 'core.askpass'
 732        option in linkgit:git-config[1].
 733
 734'GIT_FLUSH'::
 735        If this environment variable is set to "1", then commands such
 736        as 'git blame' (in incremental mode), 'git rev-list', 'git log',
 737        and 'git whatchanged' will force a flush of the output stream
 738        after each commit-oriented record have been flushed.   If this
 739        variable is set to "0", the output of these commands will be done
 740        using completely buffered I/O.   If this environment variable is
 741        not set, git will choose buffered or record-oriented flushing
 742        based on whether stdout appears to be redirected to a file or not.
 743
 744'GIT_TRACE'::
 745        If this variable is set to "1", "2" or "true" (comparison
 746        is case insensitive), git will print `trace:` messages on
 747        stderr telling about alias expansion, built-in command
 748        execution and external command execution.
 749        If this variable is set to an integer value greater than 1
 750        and lower than 10 (strictly) then git will interpret this
 751        value as an open file descriptor and will try to write the
 752        trace messages into this file descriptor.
 753        Alternatively, if this variable is set to an absolute path
 754        (starting with a '/' character), git will interpret this
 755        as a file path and will try to write the trace messages
 756        into it.
 757
 758Discussion[[Discussion]]
 759------------------------
 760
 761More detail on the following is available from the
 762link:user-manual.html#git-concepts[git concepts chapter of the
 763user-manual] and linkgit:gitcore-tutorial[7].
 764
 765A git project normally consists of a working directory with a ".git"
 766subdirectory at the top level.  The .git directory contains, among other
 767things, a compressed object database representing the complete history
 768of the project, an "index" file which links that history to the current
 769contents of the working tree, and named pointers into that history such
 770as tags and branch heads.
 771
 772The object database contains objects of three main types: blobs, which
 773hold file data; trees, which point to blobs and other trees to build up
 774directory hierarchies; and commits, which each reference a single tree
 775and some number of parent commits.
 776
 777The commit, equivalent to what other systems call a "changeset" or
 778"version", represents a step in the project's history, and each parent
 779represents an immediately preceding step.  Commits with more than one
 780parent represent merges of independent lines of development.
 781
 782All objects are named by the SHA1 hash of their contents, normally
 783written as a string of 40 hex digits.  Such names are globally unique.
 784The entire history leading up to a commit can be vouched for by signing
 785just that commit.  A fourth object type, the tag, is provided for this
 786purpose.
 787
 788When first created, objects are stored in individual files, but for
 789efficiency may later be compressed together into "pack files".
 790
 791Named pointers called refs mark interesting points in history.  A ref
 792may contain the SHA1 name of an object or the name of another ref.  Refs
 793with names beginning `ref/head/` contain the SHA1 name of the most
 794recent commit (or "head") of a branch under development.  SHA1 names of
 795tags of interest are stored under `ref/tags/`.  A special ref named
 796`HEAD` contains the name of the currently checked-out branch.
 797
 798The index file is initialized with a list of all paths and, for each
 799path, a blob object and a set of attributes.  The blob object represents
 800the contents of the file as of the head of the current branch.  The
 801attributes (last modified time, size, etc.) are taken from the
 802corresponding file in the working tree.  Subsequent changes to the
 803working tree can be found by comparing these attributes.  The index may
 804be updated with new content, and new commits may be created from the
 805content stored in the index.
 806
 807The index is also capable of storing multiple entries (called "stages")
 808for a given pathname.  These stages are used to hold the various
 809unmerged version of a file when a merge is in progress.
 810
 811Authors
 812-------
 813Git was started by Linus Torvalds, and is currently maintained by Junio
 814C Hamano. Numerous contributions have come from the git mailing list
 815<git@vger.kernel.org>. For a more complete list of contributors, see
 816http://git-scm.com/about. If you have a clone of git.git itself, the
 817output of linkgit:git-shortlog[1] and linkgit:git-blame[1] can show you
 818the authors for specific parts of the project.
 819
 820Reporting Bugs
 821--------------
 822
 823Report bugs to the Git mailing list <git@vger.kernel.org> where the
 824development and maintenance is primarily done.  You do not have to be
 825subscribed to the list to send a message there.
 826
 827SEE ALSO
 828--------
 829linkgit:gittutorial[7], linkgit:gittutorial-2[7],
 830link:everyday.html[Everyday Git], linkgit:gitcvs-migration[7],
 831linkgit:gitglossary[7], linkgit:gitcore-tutorial[7],
 832linkgit:gitcli[7], link:user-manual.html[The Git User's Manual],
 833linkgit:gitworkflows[7]
 834
 835GIT
 836---
 837Part of the linkgit:git[1] suite