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