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