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