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