Documentation / git.txton commit [PATCH] fetch.c: Make process() look at each object only once (f9cff26)
   1git(7)
   2======
   3v0.99.6, Sep 2005
   4
   5NAME
   6----
   7git - the stupid content tracker
   8
   9
  10SYNOPSIS
  11--------
  12'git-<command>' <args>
  13
  14DESCRIPTION
  15-----------
  16
  17This is reference information for the core git commands.
  18
  19Before reading this cover to cover, you may want to take a look
  20at the link:tutorial.html[tutorial] document.
  21
  22The <<Discussion>> section below contains much useful definition and
  23clarification info - read that first.  And of the commands, I suggest
  24reading gitlink:git-update-index[1] and
  25gitlink:git-read-tree[1] first - I wish I had!
  26
  27If you are migrating from CVS, link:cvs-migration.html[cvs migration]
  28document may be helpful after you finish the tutorial.
  29
  30After you get the general feel from the tutorial and this
  31overview page, you may want to take a look at the
  32link:howto-index.html[howto] documents.
  33
  34
  35David Greaves <david@dgreaves.com>
  3608/05/05
  37
  38Updated by Junio C Hamano <junkio@cox.net> on 2005-05-05 to
  39reflect recent changes.
  40
  41Commands Overview
  42-----------------
  43The git commands can helpfully be split into those that manipulate
  44the repository, the cache and the working fileset, those that
  45interrogate and compare them, and those that moves objects and
  46references between repositories.
  47
  48In addition, git itself comes with a spartan set of porcelain
  49commands.  They are usable but are not meant to compete with real
  50Porcelains.
  51
  52There are also some ancillary programs that can be viewed as useful
  53aids for using the core commands but which are unlikely to be used by
  54SCMs layered over git.
  55
  56Manipulation commands
  57~~~~~~~~~~~~~~~~~~~~~
  58gitlink:git-apply[1]::
  59        Reads a "diff -up1" or git generated patch file and
  60        applies it to the working tree.
  61
  62gitlink:git-checkout-index[1]::
  63        Copy files from the cache to the working directory
  64        Previously this command was known as git-checkout-cache.
  65
  66gitlink:git-commit-tree[1]::
  67        Creates a new commit object
  68
  69gitlink:git-hash-object[1]::
  70        Computes the object ID from a file.
  71
  72gitlink:git-init-db[1]::
  73        Creates an empty git object database
  74
  75gitlink:git-merge-index[1]::
  76        Runs a merge for files needing merging
  77        Previously this command was known as git-merge-cache.
  78
  79gitlink:git-mktag[1]::
  80        Creates a tag object
  81
  82gitlink:git-pack-objects[1]::
  83        Creates a packed archive of objects.
  84
  85gitlink:git-prune-packed[1]::
  86        Remove extra objects that are already in pack files.
  87
  88gitlink:git-read-tree[1]::
  89        Reads tree information into the directory cache
  90
  91gitlink:git-unpack-objects[1]::
  92        Unpacks objects out of a packed archive.
  93
  94gitlink:git-update-index[1]::
  95        Modifies the index or directory cache
  96        Previously this command was known as git-update-cache.
  97
  98gitlink:git-write-tree[1]::
  99        Creates a tree from the current cache
 100
 101
 102Interrogation commands
 103~~~~~~~~~~~~~~~~~~~~~~
 104
 105gitlink:git-cat-file[1]::
 106        Provide content or type information for repository objects
 107
 108gitlink:git-diff-index[1]::
 109        Compares content and mode of blobs between the cache and repository
 110        Previously this command was known as git-diff-cache.
 111
 112gitlink:git-diff-files[1]::
 113        Compares files in the working tree and the cache
 114
 115gitlink:git-diff-stages[1]::
 116        Compares two "merge stages" in the index file.
 117
 118gitlink:git-diff-tree[1]::
 119        Compares the content and mode of blobs found via two tree objects
 120
 121gitlink:git-export[1]::
 122        Exports each commit and a diff against each of its parents
 123
 124gitlink:git-fsck-objects[1]::
 125        Verifies the connectivity and validity of the objects in the database
 126        Previously this command was known as git-fsck-cache.
 127
 128gitlink:git-ls-files[1]::
 129        Information about files in the cache/working directory
 130
 131gitlink:git-ls-tree[1]::
 132        Displays a tree object in human readable form
 133
 134gitlink:git-merge-base[1]::
 135        Finds as good a common ancestor as possible for a merge
 136
 137gitlink:git-rev-list[1]::
 138        Lists commit objects in reverse chronological order
 139
 140gitlink:git-rev-tree[1]::
 141        Provides the revision tree for one or more commits
 142
 143gitlink:git-show-index[1]::
 144        Displays contents of a pack idx file.
 145
 146gitlink:git-tar-tree[1]::
 147        Creates a tar archive of the files in the named tree
 148
 149gitlink:git-unpack-file[1]::
 150        Creates a temporary file with a blob's contents
 151
 152gitlink:git-var[1]::
 153        Displays a git logical variable
 154
 155gitlink:git-verify-pack[1]::
 156        Validates packed GIT archive files
 157
 158The interrogate commands may create files - and you can force them to
 159touch the working file set - but in general they don't
 160
 161
 162Synching repositories
 163~~~~~~~~~~~~~~~~~~~~~
 164
 165gitlink:git-clone-pack[1]::
 166        Clones a repository into the current repository (engine
 167        for ssh and local transport)
 168
 169gitlink:git-fetch-pack[1]::
 170        Updates from a remote repository.
 171
 172gitlink:git-http-fetch[1]::
 173        Downloads a remote GIT repository via HTTP
 174        Previously this command was known as git-http-pull.
 175
 176gitlink:git-local-fetch[1]::
 177        Duplicates another GIT repository on a local system
 178        Previously this command was known as git-local-pull.
 179
 180gitlink:git-peek-remote[1]::
 181        Lists references on a remote repository using upload-pack protocol.
 182
 183gitlink:git-receive-pack[1]::
 184        Invoked by 'git-send-pack' to receive what is pushed to it.
 185
 186gitlink:git-send-pack[1]::
 187        Pushes to a remote repository, intelligently.
 188
 189gitlink:git-ssh-fetch[1]::
 190        Pulls from a remote repository over ssh connection
 191        Previously this command was known as git-ssh-pull.
 192
 193gitlink:git-ssh-upload[1]::
 194        Helper "server-side" program used by git-ssh-fetch
 195        Previously this command was known as git-ssh-push.
 196
 197gitlink:git-update-server-info[1]::
 198        Updates auxiliary information on a dumb server to help
 199        clients discover references and packs on it.
 200
 201gitlink:git-upload-pack[1]::
 202        Invoked by 'git-clone-pack' and 'git-fetch-pack' to push
 203        what are asked for.
 204
 205
 206Porcelain-ish Commands
 207----------------------
 208
 209gitlink:git-add[1]::
 210        Add paths to the index file.
 211        Previously this command was known as git-add-script.
 212
 213gitlink:git-applymbox[1]::
 214        Apply patches from a mailbox.
 215
 216gitlink:git-bisect[1]::
 217        Find the change that introduced a bug.
 218        Previously this command was known as git-bisect-script.
 219
 220gitlink:git-branch[1]::
 221        Create and Show branches.
 222        Previously this command was known as git-branch-script.
 223
 224gitlink:git-checkout[1]::
 225        Checkout and switch to a branch.
 226        Previously this command was known as git-checkout-script.
 227
 228gitlink:git-cherry-pick[1]::
 229        Cherry-pick the effect of an existing commit.
 230        Previously this command was known as git-cherry-pick-script.
 231
 232gitlink:git-clone[1]::
 233        Clones a repository into a new directory.
 234        Previously this command was known as git-clone-script.
 235
 236gitlink:git-commit[1]::
 237        Record changes to the repository.
 238        Previously this command was known as git-commit-script.
 239
 240gitlink:git-diff[1]::
 241        Show changes between commits, commit and working tree, etc.
 242        Previously this command was known as git-diff-script.
 243
 244gitlink:git-fetch[1]::
 245        Download from a remote repository via various protocols.
 246        Previously this command was known as git-fetch-script.
 247
 248gitlink:git-format-patch[1]::
 249        Prepare patches for e-mail submission.
 250        Previously this command was known as git-format-patch-script.
 251
 252gitlink:git-grep[1]::
 253        Print lines matching a pattern
 254
 255gitlink:git-log[1]::
 256        Shows commit logs.
 257        Previously this command was known as git-log-script.
 258
 259gitlink:git-ls-remote[1]::
 260        Shows references in a remote or local repository.
 261        Previously this command was known as git-ls-remote-script.
 262
 263gitlink:git-merge[1]::
 264        Grand unified merge driver.
 265
 266gitlink:git-octopus[1]::
 267        Merge more than two commits.
 268        Previously this command was known as git-octopus-script.
 269
 270gitlink:git-pull[1]::
 271        Fetch from and merge with a remote repository.
 272        Previously this command was known as git-pull-script.
 273
 274gitlink:git-push[1]::
 275        Update remote refs along with associated objects.
 276        Previously this command was known as git-push-script.
 277
 278gitlink:git-rebase[1]::
 279        Rebase local commits to new upstream head.
 280        Previously this command was known as git-rebase-script.
 281
 282gitlink:git-rename[1]::
 283        Rename files and directories.
 284        Previously this command was known as git-rename-script.
 285
 286gitlink:git-repack[1]::
 287        Pack unpacked objects in a repository.
 288        Previously this command was known as git-repack-script.
 289
 290gitlink:git-reset[1]::
 291        Reset current HEAD to the specified state.
 292        Previously this command was known as git-reset-script.
 293
 294gitlink:git-resolve[1]::
 295        Merge two commits.
 296        Previously this command was known as git-resolve-script.
 297
 298gitlink:git-revert[1]::
 299        Revert an existing commit.
 300        Previously this command was known as git-revert-script.
 301
 302gitlink:git-shortlog[1]::
 303        Summarizes 'git log' output.
 304
 305gitlink:git-show-branch[1]::
 306        Show branches and their commits.
 307
 308gitlink:git-status[1]::
 309        Shows the working tree status.
 310        Previously this command was known as git-status-script.
 311
 312gitlink:git-verify-tag[1]::
 313        Check the GPG signature of tag.
 314        Previously this command was known as git-verify-tag-script.
 315
 316gitlink:git-whatchanged[1]::
 317        Shows commit logs and differences they introduce.
 318
 319
 320Ancillary Commands
 321------------------
 322Manipulators:
 323
 324gitlink:git-applypatch[1]::
 325        Apply one patch extracted from an e-mail.
 326
 327gitlink:git-archimport[1]::
 328        Import an arch repository into git.
 329        Previously this command was known as git-archimport-script.
 330
 331gitlink:git-convert-objects[1]::
 332        Converts old-style GIT repository
 333        Previously this command was known as git-convert-cache.
 334
 335gitlink:git-cvsimport[1]::
 336        Salvage your data out of another SCM people love to hate.
 337        Previously this command was known as git-cvsimport-script.
 338
 339gitlink:git-merge-one-file[1]::
 340        The standard helper program to use with "git-merge-index"
 341        Previously this command was known as git-merge-one-file-script.
 342
 343gitlink:git-prune[1]::
 344        Prunes all unreachable objects from the object database
 345        Previously this command was known as git-prune-script.
 346
 347gitlink:git-relink[1]::
 348        Hardlink common objects in local repositories.
 349        Previously this command was known as git-relink-script.
 350
 351gitlink:git-sh-setup[1]::
 352        Common git shell script setup code.
 353        Previously this command was known as git-sh-setup-script.
 354
 355gitlink:git-tag[1]::
 356        An example script to create a tag object signed with GPG
 357        Previously this command was known as git-tag-script.
 358
 359
 360Interrogators:
 361
 362gitlink:git-cherry[1]::
 363        Find commits not merged upstream.
 364
 365gitlink:git-count-objects[1]::
 366        Count unpacked number of objects and their disk consumption.
 367        Previously this command was known as git-count-objects-script.
 368
 369gitlink:git-daemon[1]::
 370        A really simple server for GIT repositories.
 371
 372gitlink:git-diff-helper[1]::
 373        Generates patch format output for git-diff-*
 374
 375gitlink:git-get-tar-commit-id[1]::
 376        Extract commit ID from an archive created using git-tar-tree.
 377
 378gitlink:git-mailinfo[1]::
 379        Extracts patch from a single e-mail message.
 380
 381gitlink:git-mailsplit[1]::
 382        git-mailsplit.
 383
 384gitlink:git-patch-id[1]::
 385        Compute unique ID for a patch.
 386
 387gitlink:git-parse-remote[1]::
 388        Routines to help parsing $GIT_DIR/remotes/
 389        Previously this command was known as git-parse-remote-script.
 390
 391gitlink:git-request-pull[1]::
 392        git-request-pull.
 393        Previously this command was known as git-request-pull-script.
 394
 395gitlink:git-rev-parse[1]::
 396        Pick out and massage parameters.
 397
 398gitlink:git-send-email[1]::
 399        Send patch e-mails out of "format-patch --mbox" output.
 400        Previously this command was known as git-send-email-script.
 401
 402gitlink:git-stripspace[1]::
 403        Filter out empty lines.
 404
 405
 406Commands not yet documented
 407---------------------------
 408
 409gitlink:gitk[1]::
 410        gitk.
 411
 412
 413Identifier Terminology
 414----------------------
 415<object>::
 416        Indicates the sha1 identifier for any type of object
 417
 418<blob>::
 419        Indicates a blob object sha1 identifier
 420
 421<tree>::
 422        Indicates a tree object sha1 identifier
 423
 424<commit>::
 425        Indicates a commit object sha1 identifier
 426
 427<tree-ish>::
 428        Indicates a tree, commit or tag object sha1 identifier.  A
 429        command that takes a <tree-ish> argument ultimately wants to
 430        operate on a <tree> object but automatically dereferences
 431        <commit> and <tag> objects that point at a <tree>.
 432
 433<type>::
 434        Indicates that an object type is required.
 435        Currently one of: blob/tree/commit/tag
 436
 437<file>::
 438        Indicates a filename - always relative to the root of
 439        the tree structure GIT_INDEX_FILE describes.
 440
 441Symbolic Identifiers
 442--------------------
 443Any git command accepting any <object> can also use the following
 444symbolic notation:
 445
 446HEAD::
 447        indicates the head of the repository (ie the contents of
 448        `$GIT_DIR/HEAD`)
 449<tag>::
 450        a valid tag 'name'+
 451        (ie the contents of `$GIT_DIR/refs/tags/<tag>`)
 452<head>::
 453        a valid head 'name'+
 454        (ie the contents of `$GIT_DIR/refs/heads/<head>`)
 455<snap>::
 456        a valid snapshot 'name'+
 457        (ie the contents of `$GIT_DIR/refs/snap/<snap>`)
 458
 459
 460File/Directory Structure
 461------------------------
 462
 463Please see link:repository-layout.html[repository layout] document.
 464
 465Higher level SCMs may provide and manage additional information in the
 466GIT_DIR.
 467
 468
 469Terminology
 470-----------
 471Please see link:glossary.html[glossary] document.
 472
 473
 474Environment Variables
 475---------------------
 476Various git commands use the following environment variables:
 477
 478The git Repository
 479~~~~~~~~~~~~~~~~~~
 480These environment variables apply to 'all' core git commands. Nb: it
 481is worth noting that they may be used/overridden by SCMS sitting above
 482git so take care if using Cogito etc
 483
 484'GIT_INDEX_FILE'::
 485        This environment allows the specification of an alternate
 486        cache/index file. If not specified, the default of
 487        `$GIT_DIR/index` is used.
 488
 489'GIT_OBJECT_DIRECTORY'::
 490        If the object storage directory is specified via this
 491        environment variable then the sha1 directories are created
 492        underneath - otherwise the default `$GIT_DIR/objects`
 493        directory is used.
 494
 495'GIT_ALTERNATE_OBJECT_DIRECTORIES'::
 496        Due to the immutable nature of git objects, old objects can be
 497        archived into shared, read-only directories. This variable
 498        specifies a ":" separated list of git object directories which
 499        can be used to search for git objects. New objects will not be
 500        written to these directories.
 501
 502'GIT_DIR'::
 503        If the 'GIT_DIR' environment variable is set then it specifies
 504        a path to use instead of `./.git` for the base of the
 505        repository.
 506
 507git Commits
 508~~~~~~~~~~~
 509'GIT_AUTHOR_NAME'::
 510'GIT_AUTHOR_EMAIL'::
 511'GIT_AUTHOR_DATE'::
 512'GIT_COMMITTER_NAME'::
 513'GIT_COMMITTER_EMAIL'::
 514        see gitlink:git-commit-tree[1]
 515
 516git Diffs
 517~~~~~~~~~
 518'GIT_DIFF_OPTS'::
 519'GIT_EXTERNAL_DIFF'::
 520        see the "generating patches" section in :
 521        gitlink:git-diff-index[1];
 522        gitlink:git-diff-files[1];
 523        gitlink:git-diff-tree[1]
 524
 525Discussion[[Discussion]]
 526------------------------
 527include::../README[]
 528
 529Author
 530------
 531Written by Linus Torvalds <torvalds@osdl.org> and the git-list <git@vger.kernel.org>.
 532
 533Documentation
 534--------------
 535Documentation by David Greaves, Junio C Hamano and the git-list <git@vger.kernel.org>.
 536
 537GIT
 538---
 539Part of the gitlink:git[7] suite
 540