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