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