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