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