Documentation / git.txton commit Merge branch 'ho/dashless' (a15a435)
   1git(1)
   2======
   3
   4NAME
   5----
   6git - the stupid content tracker
   7
   8
   9SYNOPSIS
  10--------
  11[verse]
  12'git' [--version] [--exec-path[=GIT_EXEC_PATH]]
  13    [-p|--paginate|--no-pager]
  14    [--bare] [--git-dir=GIT_DIR] [--work-tree=GIT_WORK_TREE]
  15    [--help] COMMAND [ARGS]
  16
  17DESCRIPTION
  18-----------
  19Git is a fast, scalable, distributed revision control system with an
  20unusually rich command set that provides both high-level operations
  21and full access to internals.
  22
  23See linkgit:gittutorial[7] to get started, then see
  24link:everyday.html[Everyday Git] for a useful minimum set of commands, and
  25"man git-commandname" for documentation of each command.  CVS users may
  26also want to read linkgit:gitcvs-migration[7].  See
  27the link:user-manual.html[Git User's Manual] for a more in-depth
  28introduction.
  29
  30The COMMAND is either a name of a Git command (see below) or an alias
  31as defined in the configuration file (see linkgit:git-config[1]).
  32
  33Formatted and hyperlinked version of the latest git
  34documentation can be viewed at
  35`http://www.kernel.org/pub/software/scm/git/docs/`.
  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.6.1/git.html[documentation for release 1.6.1]
  47
  48* release notes for
  49  link:RelNotes-1.6.1.txt[1.6.1],
  50  link:RelNotes-1.6.0.txt[1.6.0].
  51
  52* link:v1.5.6.5/git.html[documentation for release 1.5.6.5]
  53
  54* release notes for
  55  link:RelNotes-1.5.6.5.txt[1.5.6.5],
  56  link:RelNotes-1.5.6.4.txt[1.5.6.4],
  57  link:RelNotes-1.5.6.3.txt[1.5.6.3],
  58  link:RelNotes-1.5.6.2.txt[1.5.6.2],
  59  link:RelNotes-1.5.6.1.txt[1.5.6.1],
  60  link:RelNotes-1.5.6.txt[1.5.6].
  61
  62* link:v1.5.5.4/git.html[documentation for release 1.5.5.4]
  63
  64* release notes for
  65  link:RelNotes-1.5.5.4.txt[1.5.5.4],
  66  link:RelNotes-1.5.5.3.txt[1.5.5.3],
  67  link:RelNotes-1.5.5.2.txt[1.5.5.2],
  68  link:RelNotes-1.5.5.1.txt[1.5.5.1],
  69  link:RelNotes-1.5.5.txt[1.5.5].
  70
  71* link:v1.5.4.5/git.html[documentation for release 1.5.4.5]
  72
  73* release notes for
  74  link:RelNotes-1.5.4.5.txt[1.5.4.5],
  75  link:RelNotes-1.5.4.4.txt[1.5.4.4],
  76  link:RelNotes-1.5.4.3.txt[1.5.4.3],
  77  link:RelNotes-1.5.4.2.txt[1.5.4.2],
  78  link:RelNotes-1.5.4.1.txt[1.5.4.1],
  79  link:RelNotes-1.5.4.txt[1.5.4].
  80
  81* link:v1.5.3.8/git.html[documentation for release 1.5.3.8]
  82
  83* release notes for
  84  link:RelNotes-1.5.3.8.txt[1.5.3.8],
  85  link:RelNotes-1.5.3.7.txt[1.5.3.7],
  86  link:RelNotes-1.5.3.6.txt[1.5.3.6],
  87  link:RelNotes-1.5.3.5.txt[1.5.3.5],
  88  link:RelNotes-1.5.3.4.txt[1.5.3.4],
  89  link:RelNotes-1.5.3.3.txt[1.5.3.3],
  90  link:RelNotes-1.5.3.2.txt[1.5.3.2],
  91  link:RelNotes-1.5.3.1.txt[1.5.3.1],
  92  link:RelNotes-1.5.3.txt[1.5.3].
  93
  94* link:v1.5.2.5/git.html[documentation for release 1.5.2.5]
  95
  96* release notes for
  97  link:RelNotes-1.5.2.5.txt[1.5.2.5],
  98  link:RelNotes-1.5.2.4.txt[1.5.2.4],
  99  link:RelNotes-1.5.2.3.txt[1.5.2.3],
 100  link:RelNotes-1.5.2.2.txt[1.5.2.2],
 101  link:RelNotes-1.5.2.1.txt[1.5.2.1],
 102  link:RelNotes-1.5.2.txt[1.5.2].
 103
 104* link:v1.5.1.6/git.html[documentation for release 1.5.1.6]
 105
 106* release notes for
 107  link:RelNotes-1.5.1.6.txt[1.5.1.6],
 108  link:RelNotes-1.5.1.5.txt[1.5.1.5],
 109  link:RelNotes-1.5.1.4.txt[1.5.1.4],
 110  link:RelNotes-1.5.1.3.txt[1.5.1.3],
 111  link:RelNotes-1.5.1.2.txt[1.5.1.2],
 112  link:RelNotes-1.5.1.1.txt[1.5.1.1],
 113  link:RelNotes-1.5.1.txt[1.5.1].
 114
 115* link:v1.5.0.7/git.html[documentation for release 1.5.0.7]
 116
 117* release notes for
 118  link:RelNotes-1.5.0.7.txt[1.5.0.7],
 119  link:RelNotes-1.5.0.6.txt[1.5.0.6],
 120  link:RelNotes-1.5.0.5.txt[1.5.0.5],
 121  link:RelNotes-1.5.0.3.txt[1.5.0.3],
 122  link:RelNotes-1.5.0.2.txt[1.5.0.2],
 123  link:RelNotes-1.5.0.1.txt[1.5.0.1],
 124  link:RelNotes-1.5.0.txt[1.5.0].
 125
 126* documentation for release link:v1.4.4.4/git.html[1.4.4.4],
 127  link:v1.3.3/git.html[1.3.3],
 128  link:v1.2.6/git.html[1.2.6],
 129  link:v1.0.13/git.html[1.0.13].
 130
 131============
 132
 133endif::stalenotes[]
 134
 135OPTIONS
 136-------
 137--version::
 138        Prints the git suite version that the 'git' program came from.
 139
 140--help::
 141        Prints the synopsis and a list of the most commonly used
 142        commands. If the option '--all' or '-a' is given then all
 143        available commands are printed. If a git command is named this
 144        option will bring up the manual page for that command.
 145+
 146Other options are available to control how the manual page is
 147displayed. See linkgit:git-help[1] for more information,
 148because `git --help ...` is converted internally into `git
 149help ...`.
 150
 151--exec-path::
 152        Path to wherever your core git programs are installed.
 153        This can also be controlled by setting the GIT_EXEC_PATH
 154        environment variable. If no path is given, 'git' will print
 155        the current setting and then exit.
 156
 157-p::
 158--paginate::
 159        Pipe all output into 'less' (or if set, $PAGER).
 160
 161--no-pager::
 162        Do not pipe git output into a pager.
 163
 164--git-dir=<path>::
 165        Set the path to the repository. This can also be controlled by
 166        setting the GIT_DIR environment variable. It can be an absolute
 167        path or relative path to current working directory.
 168
 169--work-tree=<path>::
 170        Set the path to the working tree.  The value will not be
 171        used in combination with repositories found automatically in
 172        a .git directory (i.e. $GIT_DIR is not set).
 173        This can also be controlled by setting the GIT_WORK_TREE
 174        environment variable and the core.worktree configuration
 175        variable. It can be an absolute path or relative path to
 176        the directory specified by --git-dir or GIT_DIR.
 177        Note: If --git-dir or GIT_DIR are specified but none of
 178        --work-tree, GIT_WORK_TREE and core.worktree is specified,
 179        the current working directory is regarded as the top directory
 180        of your working tree.
 181
 182--bare::
 183        Treat the repository as a bare repository.  If GIT_DIR
 184        environment is not set, it is set to the current working
 185        directory.
 186
 187
 188FURTHER DOCUMENTATION
 189---------------------
 190
 191See the references above to get started using git.  The following is
 192probably more detail than necessary for a first-time user.
 193
 194The link:user-manual.html#git-concepts[git concepts chapter of the
 195user-manual] and linkgit:gitcore-tutorial[7] both provide
 196introductions to the underlying git architecture.
 197
 198See also the link:howto-index.html[howto] documents for some useful
 199examples.
 200
 201The internals are documented in the
 202link:technical/api-index.html[GIT API documentation].
 203
 204GIT COMMANDS
 205------------
 206
 207We divide git into high level ("porcelain") commands and low level
 208("plumbing") commands.
 209
 210High-level commands (porcelain)
 211-------------------------------
 212
 213We separate the porcelain commands into the main commands and some
 214ancillary user utilities.
 215
 216Main porcelain commands
 217~~~~~~~~~~~~~~~~~~~~~~~
 218
 219include::cmds-mainporcelain.txt[]
 220
 221Ancillary Commands
 222~~~~~~~~~~~~~~~~~~
 223Manipulators:
 224
 225include::cmds-ancillarymanipulators.txt[]
 226
 227Interrogators:
 228
 229include::cmds-ancillaryinterrogators.txt[]
 230
 231
 232Interacting with Others
 233~~~~~~~~~~~~~~~~~~~~~~~
 234
 235These commands are to interact with foreign SCM and with other
 236people via patch over e-mail.
 237
 238include::cmds-foreignscminterface.txt[]
 239
 240
 241Low-level commands (plumbing)
 242-----------------------------
 243
 244Although git includes its
 245own porcelain layer, its low-level commands are sufficient to support
 246development of alternative porcelains.  Developers of such porcelains
 247might start by reading about linkgit:git-update-index[1] and
 248linkgit:git-read-tree[1].
 249
 250The interface (input, output, set of options and the semantics)
 251to these low-level commands are meant to be a lot more stable
 252than Porcelain level commands, because these commands are
 253primarily for scripted use.  The interface to Porcelain commands
 254on the other hand are subject to change in order to improve the
 255end user experience.
 256
 257The following description divides
 258the low-level commands into commands that manipulate objects (in
 259the repository, index, and working tree), commands that interrogate and
 260compare objects, and commands that move objects and references between
 261repositories.
 262
 263
 264Manipulation commands
 265~~~~~~~~~~~~~~~~~~~~~
 266
 267include::cmds-plumbingmanipulators.txt[]
 268
 269
 270Interrogation commands
 271~~~~~~~~~~~~~~~~~~~~~~
 272
 273include::cmds-plumbinginterrogators.txt[]
 274
 275In general, the interrogate commands do not touch the files in
 276the working tree.
 277
 278
 279Synching repositories
 280~~~~~~~~~~~~~~~~~~~~~
 281
 282include::cmds-synchingrepositories.txt[]
 283
 284The following are helper programs used by the above; end users
 285typically do not use them directly.
 286
 287include::cmds-synchelpers.txt[]
 288
 289
 290Internal helper commands
 291~~~~~~~~~~~~~~~~~~~~~~~~
 292
 293These are internal helper commands used by other commands; end
 294users typically do not use them directly.
 295
 296include::cmds-purehelpers.txt[]
 297
 298
 299Configuration Mechanism
 300-----------------------
 301
 302Starting from 0.99.9 (actually mid 0.99.8.GIT), `.git/config` file
 303is used to hold per-repository configuration options.  It is a
 304simple text file modeled after `.ini` format familiar to some
 305people.  Here is an example:
 306
 307------------
 308#
 309# A '#' or ';' character indicates a comment.
 310#
 311
 312; core variables
 313[core]
 314        ; Don't trust file modes
 315        filemode = false
 316
 317; user identity
 318[user]
 319        name = "Junio C Hamano"
 320        email = "junkio@twinsun.com"
 321
 322------------
 323
 324Various commands read from the configuration file and adjust
 325their operation accordingly.
 326
 327
 328Identifier Terminology
 329----------------------
 330<object>::
 331        Indicates the object name for any type of object.
 332
 333<blob>::
 334        Indicates a blob object name.
 335
 336<tree>::
 337        Indicates a tree object name.
 338
 339<commit>::
 340        Indicates a commit object name.
 341
 342<tree-ish>::
 343        Indicates a tree, commit or tag object name.  A
 344        command that takes a <tree-ish> argument ultimately wants to
 345        operate on a <tree> object but automatically dereferences
 346        <commit> and <tag> objects that point at a <tree>.
 347
 348<commit-ish>::
 349        Indicates a commit or tag object name.  A
 350        command that takes a <commit-ish> argument ultimately wants to
 351        operate on a <commit> object but automatically dereferences
 352        <tag> objects that point at a <commit>.
 353
 354<type>::
 355        Indicates that an object type is required.
 356        Currently one of: `blob`, `tree`, `commit`, or `tag`.
 357
 358<file>::
 359        Indicates a filename - almost always relative to the
 360        root of the tree structure `GIT_INDEX_FILE` describes.
 361
 362Symbolic Identifiers
 363--------------------
 364Any git command accepting any <object> can also use the following
 365symbolic notation:
 366
 367HEAD::
 368        indicates the head of the current branch (i.e. the
 369        contents of `$GIT_DIR/HEAD`).
 370
 371<tag>::
 372        a valid tag 'name'
 373        (i.e. the contents of `$GIT_DIR/refs/tags/<tag>`).
 374
 375<head>::
 376        a valid head 'name'
 377        (i.e. the contents of `$GIT_DIR/refs/heads/<head>`).
 378
 379For a more complete list of ways to spell object names, see
 380"SPECIFYING REVISIONS" section in linkgit:git-rev-parse[1].
 381
 382
 383File/Directory Structure
 384------------------------
 385
 386Please see the linkgit:gitrepository-layout[5] document.
 387
 388Read linkgit:githooks[5] for more details about each hook.
 389
 390Higher level SCMs may provide and manage additional information in the
 391`$GIT_DIR`.
 392
 393
 394Terminology
 395-----------
 396Please see linkgit:gitglossary[7].
 397
 398
 399Environment Variables
 400---------------------
 401Various git commands use the following environment variables:
 402
 403The git Repository
 404~~~~~~~~~~~~~~~~~~
 405These environment variables apply to 'all' core git commands. Nb: it
 406is worth noting that they may be used/overridden by SCMS sitting above
 407git so take care if using Cogito etc.
 408
 409'GIT_INDEX_FILE'::
 410        This environment allows the specification of an alternate
 411        index file. If not specified, the default of `$GIT_DIR/index`
 412        is used.
 413
 414'GIT_OBJECT_DIRECTORY'::
 415        If the object storage directory is specified via this
 416        environment variable then the sha1 directories are created
 417        underneath - otherwise the default `$GIT_DIR/objects`
 418        directory is used.
 419
 420'GIT_ALTERNATE_OBJECT_DIRECTORIES'::
 421        Due to the immutable nature of git objects, old objects can be
 422        archived into shared, read-only directories. This variable
 423        specifies a ":" separated (on Windows ";" separated) list
 424        of git object directories which can be used to search for git
 425        objects. New objects will not be written to these directories.
 426
 427'GIT_DIR'::
 428        If the 'GIT_DIR' environment variable is set then it
 429        specifies a path to use instead of the default `.git`
 430        for the base of the repository.
 431
 432'GIT_WORK_TREE'::
 433        Set the path to the working tree.  The value will not be
 434        used in combination with repositories found automatically in
 435        a .git directory (i.e. $GIT_DIR is not set).
 436        This can also be controlled by the '--work-tree' command line
 437        option and the core.worktree configuration variable.
 438
 439'GIT_CEILING_DIRECTORIES'::
 440        This should be a colon-separated list of absolute paths.
 441        If set, it is a list of directories that git should not chdir
 442        up into while looking for a repository directory.
 443        It will not exclude the current working directory or
 444        a GIT_DIR set on the command line or in the environment.
 445        (Useful for excluding slow-loading network directories.)
 446
 447git Commits
 448~~~~~~~~~~~
 449'GIT_AUTHOR_NAME'::
 450'GIT_AUTHOR_EMAIL'::
 451'GIT_AUTHOR_DATE'::
 452'GIT_COMMITTER_NAME'::
 453'GIT_COMMITTER_EMAIL'::
 454'GIT_COMMITTER_DATE'::
 455'EMAIL'::
 456        see linkgit:git-commit-tree[1]
 457
 458git Diffs
 459~~~~~~~~~
 460'GIT_DIFF_OPTS'::
 461        Only valid setting is "--unified=??" or "-u??" to set the
 462        number of context lines shown when a unified diff is created.
 463        This takes precedence over any "-U" or "--unified" option
 464        value passed on the git diff command line.
 465
 466'GIT_EXTERNAL_DIFF'::
 467        When the environment variable 'GIT_EXTERNAL_DIFF' is set, the
 468        program named by it is called, instead of the diff invocation
 469        described above.  For a path that is added, removed, or modified,
 470        'GIT_EXTERNAL_DIFF' is called with 7 parameters:
 471
 472        path old-file old-hex old-mode new-file new-hex new-mode
 473+
 474where:
 475
 476        <old|new>-file:: are files GIT_EXTERNAL_DIFF can use to read the
 477                         contents of <old|new>,
 478        <old|new>-hex:: are the 40-hexdigit SHA1 hashes,
 479        <old|new>-mode:: are the octal representation of the file modes.
 480
 481+
 482The file parameters can point at the user's working file
 483(e.g. `new-file` in "git-diff-files"), `/dev/null` (e.g. `old-file`
 484when a new file is added), or a temporary file (e.g. `old-file` in the
 485index).  'GIT_EXTERNAL_DIFF' should not worry about unlinking the
 486temporary file --- it is removed when 'GIT_EXTERNAL_DIFF' exits.
 487+
 488For a path that is unmerged, 'GIT_EXTERNAL_DIFF' is called with 1
 489parameter, <path>.
 490
 491other
 492~~~~~
 493'GIT_MERGE_VERBOSITY'::
 494        A number controlling the amount of output shown by
 495        the recursive merge strategy.  Overrides merge.verbosity.
 496        See linkgit:git-merge[1]
 497
 498'GIT_PAGER'::
 499        This environment variable overrides `$PAGER`. If it is set
 500        to an empty string or to the value "cat", git will not launch
 501        a pager.  See also the `core.pager` option in
 502        linkgit:git-config[1].
 503
 504'GIT_SSH'::
 505        If this environment variable is set then 'git-fetch'
 506        and 'git-push' will use this command instead
 507        of 'ssh' when they need to connect to a remote system.
 508        The '$GIT_SSH' command will be given exactly two arguments:
 509        the 'username@host' (or just 'host') from the URL and the
 510        shell command to execute on that remote system.
 511+
 512To pass options to the program that you want to list in GIT_SSH
 513you will need to wrap the program and options into a shell script,
 514then set GIT_SSH to refer to the shell script.
 515+
 516Usually it is easier to configure any desired options through your
 517personal `.ssh/config` file.  Please consult your ssh documentation
 518for further details.
 519
 520'GIT_FLUSH'::
 521        If this environment variable is set to "1", then commands such
 522        as 'git-blame' (in incremental mode), 'git-rev-list', 'git-log',
 523        and 'git-whatchanged' will force a flush of the output stream
 524        after each commit-oriented record have been flushed.   If this
 525        variable is set to "0", the output of these commands will be done
 526        using completely buffered I/O.   If this environment variable is
 527        not set, git will choose buffered or record-oriented flushing
 528        based on whether stdout appears to be redirected to a file or not.
 529
 530'GIT_TRACE'::
 531        If this variable is set to "1", "2" or "true" (comparison
 532        is case insensitive), git will print `trace:` messages on
 533        stderr telling about alias expansion, built-in command
 534        execution and external command execution.
 535        If this variable is set to an integer value greater than 1
 536        and lower than 10 (strictly) then git will interpret this
 537        value as an open file descriptor and will try to write the
 538        trace messages into this file descriptor.
 539        Alternatively, if this variable is set to an absolute path
 540        (starting with a '/' character), git will interpret this
 541        as a file path and will try to write the trace messages
 542        into it.
 543
 544Discussion[[Discussion]]
 545------------------------
 546
 547More detail on the following is available from the
 548link:user-manual.html#git-concepts[git concepts chapter of the
 549user-manual] and linkgit:gitcore-tutorial[7].
 550
 551A git project normally consists of a working directory with a ".git"
 552subdirectory at the top level.  The .git directory contains, among other
 553things, a compressed object database representing the complete history
 554of the project, an "index" file which links that history to the current
 555contents of the working tree, and named pointers into that history such
 556as tags and branch heads.
 557
 558The object database contains objects of three main types: blobs, which
 559hold file data; trees, which point to blobs and other trees to build up
 560directory hierarchies; and commits, which each reference a single tree
 561and some number of parent commits.
 562
 563The commit, equivalent to what other systems call a "changeset" or
 564"version", represents a step in the project's history, and each parent
 565represents an immediately preceding step.  Commits with more than one
 566parent represent merges of independent lines of development.
 567
 568All objects are named by the SHA1 hash of their contents, normally
 569written as a string of 40 hex digits.  Such names are globally unique.
 570The entire history leading up to a commit can be vouched for by signing
 571just that commit.  A fourth object type, the tag, is provided for this
 572purpose.
 573
 574When first created, objects are stored in individual files, but for
 575efficiency may later be compressed together into "pack files".
 576
 577Named pointers called refs mark interesting points in history.  A ref
 578may contain the SHA1 name of an object or the name of another ref.  Refs
 579with names beginning `ref/head/` contain the SHA1 name of the most
 580recent commit (or "head") of a branch under development.  SHA1 names of
 581tags of interest are stored under `ref/tags/`.  A special ref named
 582`HEAD` contains the name of the currently checked-out branch.
 583
 584The index file is initialized with a list of all paths and, for each
 585path, a blob object and a set of attributes.  The blob object represents
 586the contents of the file as of the head of the current branch.  The
 587attributes (last modified time, size, etc.) are taken from the
 588corresponding file in the working tree.  Subsequent changes to the
 589working tree can be found by comparing these attributes.  The index may
 590be updated with new content, and new commits may be created from the
 591content stored in the index.
 592
 593The index is also capable of storing multiple entries (called "stages")
 594for a given pathname.  These stages are used to hold the various
 595unmerged version of a file when a merge is in progress.
 596
 597Authors
 598-------
 599* git's founding father is Linus Torvalds <torvalds@osdl.org>.
 600* The current git nurse is Junio C Hamano <gitster@pobox.com>.
 601* The git potty was written by Andreas Ericsson <ae@op5.se>.
 602* General upbringing is handled by the git-list <git@vger.kernel.org>.
 603
 604Documentation
 605--------------
 606The documentation for git suite was started by David Greaves
 607<david@dgreaves.com>, and later enhanced greatly by the
 608contributors on the git-list <git@vger.kernel.org>.
 609
 610SEE ALSO
 611--------
 612linkgit:gittutorial[7], linkgit:gittutorial-2[7],
 613link:everyday.html[Everyday Git], linkgit:gitcvs-migration[7],
 614linkgit:gitglossary[7], linkgit:gitcore-tutorial[7],
 615linkgit:gitcli[7], link:user-manual.html[The Git User's Manual]
 616
 617GIT
 618---
 619Part of the linkgit:git[1] suite