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