Documentation / glossary.txton commit Merge branch 'js/cvsexportcommit' (6c99f18)
   1GIT Glossary
   2============
   3
   4[[def_alternate_object_database]]alternate object database::
   5        Via the alternates mechanism, a <<def_repository,repository>>
   6        can inherit part of its <<def_object_database,object database>>
   7        from another object database, which is called "alternate".
   8
   9[[def_bare_repository]]bare repository::
  10        A bare repository is normally an appropriately
  11        named <<def_directory,directory>> with a `.git` suffix that does not
  12        have a locally checked-out copy of any of the files under
  13        revision control. That is, all of the `git`
  14        administrative and control files that would normally be present in the
  15        hidden `.git` sub-directory are directly present in the
  16        `repository.git` directory instead,
  17        and no other files are present and checked out. Usually publishers of
  18        public repositories make bare repositories available.
  19
  20[[def_blob_object]]blob object::
  21        Untyped <<def_object,object>>, e.g. the contents of a file.
  22
  23[[def_branch]]branch::
  24        A "branch" is an active line of development.  The most recent
  25        <<def_commit,commit>> on a branch is referred to as the tip of
  26        that branch.  The tip of the branch is referenced by a branch
  27        <<def_head,head>>, which moves forward as additional development
  28        is done on the branch.  A single git
  29        <<def_repository,repository>> can track an arbitrary number of
  30        branches, but your <<def_working_tree,working tree>> is
  31        associated with just one of them (the "current" or "checked out"
  32        branch), and <<def_HEAD,HEAD>> points to that branch.
  33
  34[[def_cache]]cache::
  35        Obsolete for: <<def_index,index>>.
  36
  37[[def_chain]]chain::
  38        A list of objects, where each <<def_object,object>> in the list contains
  39        a reference to its successor (for example, the successor of a
  40        <<def_commit,commit>> could be one of its <<def_parent,parents>>).
  41
  42[[def_changeset]]changeset::
  43        BitKeeper/cvsps speak for "<<def_commit,commit>>". Since git does not
  44        store changes, but states, it really does not make sense to use the term
  45        "changesets" with git.
  46
  47[[def_checkout]]checkout::
  48        The action of updating all or part of the
  49        <<def_working_tree,working tree>> with a <<def_tree_object,tree object>>
  50        or <<def_blob_object,blob>> from the
  51        <<def_object_database,object database>>, and updating the
  52        <<def_index,index>> and <<def_HEAD,HEAD>> if the whole working tree has
  53        been pointed at a new <<def_branch,branch>>.
  54
  55[[def_cherry-picking]]cherry-picking::
  56        In <<def_SCM,SCM>> jargon, "cherry pick" means to choose a subset of
  57        changes out of a series of changes (typically commits) and record them
  58        as a new series of changes on top of a different codebase. In GIT, this is
  59        performed by the "git cherry-pick" command to extract the change introduced
  60        by an existing <<def_commit,commit>> and to record it based on the tip
  61        of the current <<def_branch,branch>> as a new commit.
  62
  63[[def_clean]]clean::
  64        A <<def_working_tree,working tree>> is clean, if it
  65        corresponds to the <<def_revision,revision>> referenced by the current
  66        <<def_head,head>>. Also see "<<def_dirty,dirty>>".
  67
  68[[def_commit]]commit::
  69        As a noun: A single point in the
  70        git history; the entire history of a project is represented as a
  71        set of interrelated commits.  The word "commit" is often
  72        used by git in the same places other revision control systems
  73        use the words "revision" or "version".  Also used as a short
  74        hand for <<def_commit_object,commit object>>.
  75+
  76As a verb: The action of storing a new snapshot of the project's
  77state in the git history, by creating a new commit representing the current
  78state of the <<def_index,index>> and advancing <<def_HEAD,HEAD>>
  79to point at the new commit.
  80
  81[[def_commit_object]]commit object::
  82        An <<def_object,object>> which contains the information about a
  83        particular <<def_revision,revision>>, such as <<def_parent,parents>>, committer,
  84        author, date and the <<def_tree_object,tree object>> which corresponds
  85        to the top <<def_directory,directory>> of the stored
  86        revision.
  87
  88[[def_core_git]]core git::
  89        Fundamental data structures and utilities of git. Exposes only limited
  90        source code management tools.
  91
  92[[def_DAG]]DAG::
  93        Directed acyclic graph. The <<def_commit,commit>> objects form a
  94        directed acyclic graph, because they have parents (directed), and the
  95        graph of commit objects is acyclic (there is no
  96        <<def_chain,chain>> which begins and ends with the same
  97        <<def_object,object>>).
  98
  99[[def_dangling_object]]dangling object::
 100        An <<def_unreachable_object,unreachable object>> which is not
 101        <<def_reachable,reachable>> even from other unreachable objects; a
 102        dangling object has no references to it from any
 103        reference or <<def_object,object>> in the <<def_repository,repository>>.
 104
 105[[def_detached_HEAD]]detached HEAD::
 106        Normally the <<def_HEAD,HEAD>> stores the name of a
 107        <<def_branch,branch>>.  However, git also allows you to <<def_checkout,check out>>
 108        an arbitrary <<def_commit,commit>> that isn't necessarily the tip of any
 109        particular branch.  In this case HEAD is said to be "detached".
 110
 111[[def_dircache]]dircache::
 112        You are *waaaaay* behind. See <<def_index,index>>.
 113
 114[[def_directory]]directory::
 115        The list you get with "ls" :-)
 116
 117[[def_dirty]]dirty::
 118        A <<def_working_tree,working tree>> is said to be "dirty" if
 119        it contains modifications which have not been <<def_commit,committed>> to the current
 120        <<def_branch,branch>>.
 121
 122[[def_ent]]ent::
 123        Favorite synonym to "<<def_tree-ish,tree-ish>>" by some total geeks. See
 124        `http://en.wikipedia.org/wiki/Ent_(Middle-earth)` for an in-depth
 125        explanation. Avoid this term, not to confuse people.
 126
 127[[def_evil_merge]]evil merge::
 128        An evil merge is a <<def_merge,merge>> that introduces changes that
 129        do not appear in any <<def_parent,parent>>.
 130
 131[[def_fast_forward]]fast forward::
 132        A fast-forward is a special type of <<def_merge,merge>> where you have a
 133        <<def_revision,revision>> and you are "merging" another
 134        <<def_branch,branch>>'s changes that happen to be a descendant of what
 135        you have. In such these cases, you do not make a new <<def_merge,merge>>
 136        <<def_commit,commit>> but instead just update to his
 137        revision. This will happen frequently on a
 138        <<def_tracking_branch,tracking branch>> of a remote
 139        <<def_repository,repository>>.
 140
 141[[def_fetch]]fetch::
 142        Fetching a <<def_branch,branch>> means to get the
 143        branch's <<def_head_ref,head ref>> from a remote
 144        <<def_repository,repository>>, to find out which objects are
 145        missing from the local <<def_object_database,object database>>,
 146        and to get them, too.  See also linkgit:git-fetch[1].
 147
 148[[def_file_system]]file system::
 149        Linus Torvalds originally designed git to be a user space file system,
 150        i.e. the infrastructure to hold files and directories. That ensured the
 151        efficiency and speed of git.
 152
 153[[def_git_archive]]git archive::
 154        Synonym for <<def_repository,repository>> (for arch people).
 155
 156[[def_grafts]]grafts::
 157        Grafts enables two otherwise different lines of development to be joined
 158        together by recording fake ancestry information for commits. This way
 159        you can make git pretend the set of <<def_parent,parents>> a <<def_commit,commit>> has
 160        is different from what was recorded when the commit was
 161        created. Configured via the `.git/info/grafts` file.
 162
 163[[def_hash]]hash::
 164        In git's context, synonym to <<def_object_name,object name>>.
 165
 166[[def_head]]head::
 167        A <<def_ref,named reference>> to the <<def_commit,commit>> at the tip of a
 168        <<def_branch,branch>>.  Heads are stored in
 169        `$GIT_DIR/refs/heads/`, except when using packed refs. (See
 170        linkgit:git-pack-refs[1].)
 171
 172[[def_HEAD]]HEAD::
 173        The current <<def_branch,branch>>.  In more detail: Your <<def_working_tree,
 174        working tree>> is normally derived from the state of the tree
 175        referred to by HEAD.  HEAD is a reference to one of the
 176        <<def_head,heads>> in your repository, except when using a
 177        <<def_detached_HEAD,detached HEAD>>, in which case it may
 178        reference an arbitrary commit.
 179
 180[[def_head_ref]]head ref::
 181        A synonym for <<def_head,head>>.
 182
 183[[def_hook]]hook::
 184        During the normal execution of several git commands, call-outs are made
 185        to optional scripts that allow a developer to add functionality or
 186        checking. Typically, the hooks allow for a command to be pre-verified
 187        and potentially aborted, and allow for a post-notification after the
 188        operation is done. The hook scripts are found in the
 189        `$GIT_DIR/hooks/` directory, and are enabled by simply
 190        making them executable.
 191
 192[[def_index]]index::
 193        A collection of files with stat information, whose contents are stored
 194        as objects. The index is a stored version of your
 195        <<def_working_tree,working tree>>. Truth be told, it can also contain a second, and even
 196        a third version of a working tree, which are used
 197        when <<def_merge,merging>>.
 198
 199[[def_index_entry]]index entry::
 200        The information regarding a particular file, stored in the
 201        <<def_index,index>>. An index entry can be unmerged, if a
 202        <<def_merge,merge>> was started, but not yet finished (i.e. if
 203        the index contains multiple versions of that file).
 204
 205[[def_master]]master::
 206        The default development <<def_branch,branch>>. Whenever you
 207        create a git <<def_repository,repository>>, a branch named
 208        "master" is created, and becomes the active branch. In most
 209        cases, this contains the local development, though that is
 210        purely by convention and is not required.
 211
 212[[def_merge]]merge::
 213        As a verb: To bring the contents of another
 214        <<def_branch,branch>> (possibly from an external
 215        <<def_repository,repository>>) into the current branch.  In the
 216        case where the merged-in branch is from a different repository,
 217        this is done by first <<def_fetch,fetching>> the remote branch
 218        and then merging the result into the current branch.  This
 219        combination of fetch and merge operations is called a
 220        <<def_pull,pull>>.  Merging is performed by an automatic process
 221        that identifies changes made since the branches diverged, and
 222        then applies all those changes together.  In cases where changes
 223        conflict, manual intervention may be required to complete the
 224        merge.
 225+
 226As a noun: unless it is a <<def_fast_forward,fast forward>>, a
 227successful merge results in the creation of a new <<def_commit,commit>>
 228representing the result of the merge, and having as
 229<<def_parent,parents>> the tips of the merged <<def_branch,branches>>.
 230This commit is referred to as a "merge commit", or sometimes just a
 231"merge".
 232
 233[[def_object]]object::
 234        The unit of storage in git. It is uniquely identified by the
 235        <<def_SHA1,SHA1>> of its contents. Consequently, an
 236        object can not be changed.
 237
 238[[def_object_database]]object database::
 239        Stores a set of "objects", and an individual <<def_object,object>> is
 240        identified by its <<def_object_name,object name>>. The objects usually
 241        live in `$GIT_DIR/objects/`.
 242
 243[[def_object_identifier]]object identifier::
 244        Synonym for <<def_object_name,object name>>.
 245
 246[[def_object_name]]object name::
 247        The unique identifier of an <<def_object,object>>. The <<def_hash,hash>>
 248        of the object's contents using the Secure Hash Algorithm
 249        1 and usually represented by the 40 character hexadecimal encoding of
 250        the <<def_hash,hash>> of the object.
 251
 252[[def_object_type]]object type::
 253        One of the identifiers
 254        "<<def_commit,commit>>","<<def_tree,tree>>","<<def_tag,tag>>" or "<<def_blob_object,blob>>"
 255        describing the type of an <<def_object,object>>.
 256
 257[[def_octopus]]octopus::
 258        To <<def_merge,merge>> more than two <<def_branch,branches>>. Also denotes an
 259        intelligent predator.
 260
 261[[def_origin]]origin::
 262        The default upstream <<def_repository,repository>>. Most projects have
 263        at least one upstream project which they track. By default
 264        'origin' is used for that purpose. New upstream updates
 265        will be fetched into remote <<def_tracking_branch,tracking branches>> named
 266        origin/name-of-upstream-branch, which you can see using
 267        "`git branch -r`".
 268
 269[[def_pack]]pack::
 270        A set of objects which have been compressed into one file (to save space
 271        or to transmit them efficiently).
 272
 273[[def_pack_index]]pack index::
 274        The list of identifiers, and other information, of the objects in a
 275        <<def_pack,pack>>, to assist in efficiently accessing the contents of a
 276        pack.
 277
 278[[def_parent]]parent::
 279        A <<def_commit_object,commit object>> contains a (possibly empty) list
 280        of the logical predecessor(s) in the line of development, i.e. its
 281        parents.
 282
 283[[def_pickaxe]]pickaxe::
 284        The term <<def_pickaxe,pickaxe>> refers to an option to the diffcore
 285        routines that help select changes that add or delete a given text
 286        string. With the `--pickaxe-all` option, it can be used to view the full
 287        <<def_changeset,changeset>> that introduced or removed, say, a
 288        particular line of text. See linkgit:git-diff[1].
 289
 290[[def_plumbing]]plumbing::
 291        Cute name for <<def_core_git,core git>>.
 292
 293[[def_porcelain]]porcelain::
 294        Cute name for programs and program suites depending on
 295        <<def_core_git,core git>>, presenting a high level access to
 296        core git. Porcelains expose more of a <<def_SCM,SCM>>
 297        interface than the <<def_plumbing,plumbing>>.
 298
 299[[def_pull]]pull::
 300        Pulling a <<def_branch,branch>> means to <<def_fetch,fetch>> it and
 301        <<def_merge,merge>> it.  See also linkgit:git-pull[1].
 302
 303[[def_push]]push::
 304        Pushing a <<def_branch,branch>> means to get the branch's
 305        <<def_head_ref,head ref>> from a remote <<def_repository,repository>>,
 306        find out if it is a direct ancestor to the branch's local
 307        head ref, and in that case, putting all
 308        objects, which are <<def_reachable,reachable>> from the local
 309        head ref, and which are missing from the remote
 310        repository, into the remote
 311        <<def_object_database,object database>>, and updating the remote
 312        head ref. If the remote <<def_head,head>> is not an
 313        ancestor to the local head, the push fails.
 314
 315[[def_reachable]]reachable::
 316        All of the ancestors of a given <<def_commit,commit>> are said to be
 317        "reachable" from that commit. More
 318        generally, one <<def_object,object>> is reachable from
 319        another if we can reach the one from the other by a <<def_chain,chain>>
 320        that follows <<def_tag,tags>> to whatever they tag,
 321        <<def_commit_object,commits>> to their parents or trees, and
 322        <<def_tree_object,trees>> to the trees or <<def_blob_object,blobs>>
 323        that they contain.
 324
 325[[def_rebase]]rebase::
 326        To reapply a series of changes from a <<def_branch,branch>> to a
 327        different base, and reset the <<def_head,head>> of that branch
 328        to the result.
 329
 330[[def_ref]]ref::
 331        A 40-byte hex representation of a <<def_SHA1,SHA1>> or a name that
 332        denotes a particular <<def_object,object>>. These may be stored in
 333        `$GIT_DIR/refs/`.
 334
 335[[def_reflog]]reflog::
 336        A reflog shows the local "history" of a ref.  In other words,
 337        it can tell you what the 3rd last revision in _this_ repository
 338        was, and what was the current state in _this_ repository,
 339        yesterday 9:14pm.  See linkgit:git-reflog[1] for details.
 340
 341[[def_refspec]]refspec::
 342        A "refspec" is used by <<def_fetch,fetch>> and
 343        <<def_push,push>> to describe the mapping between remote
 344        <<def_ref,ref>> and local ref. They are combined with a colon in
 345        the format <src>:<dst>, preceded by an optional plus sign, +.
 346        For example: `git fetch $URL
 347        refs/heads/master:refs/heads/origin` means "grab the master
 348        <<def_branch,branch>> <<def_head,head>> from the $URL and store
 349        it as my origin branch head". And `git push
 350        $URL refs/heads/master:refs/heads/to-upstream` means "publish my
 351        master branch head as to-upstream branch at $URL". See also
 352        linkgit:git-push[1].
 353
 354[[def_repository]]repository::
 355        A collection of <<def_ref,refs>> together with an
 356        <<def_object_database,object database>> containing all objects
 357        which are <<def_reachable,reachable>> from the refs, possibly
 358        accompanied by meta data from one or more <<def_porcelain,porcelains>>. A
 359        repository can share an object database with other repositories
 360        via <<def_alternate_object_database,alternates mechanism>>.
 361
 362[[def_resolve]]resolve::
 363        The action of fixing up manually what a failed automatic
 364        <<def_merge,merge>> left behind.
 365
 366[[def_revision]]revision::
 367        A particular state of files and directories which was stored in the
 368        <<def_object_database,object database>>. It is referenced by a
 369        <<def_commit_object,commit object>>.
 370
 371[[def_rewind]]rewind::
 372        To throw away part of the development, i.e. to assign the
 373        <<def_head,head>> to an earlier <<def_revision,revision>>.
 374
 375[[def_SCM]]SCM::
 376        Source code management (tool).
 377
 378[[def_SHA1]]SHA1::
 379        Synonym for <<def_object_name,object name>>.
 380
 381[[def_shallow_repository]]shallow repository::
 382        A shallow <<def_repository,repository>> has an incomplete
 383        history some of whose <<def_commit,commits>> have <<def_parent,parents>> cauterized away (in other
 384        words, git is told to pretend that these commits do not have the
 385        parents, even though they are recorded in the <<def_commit_object,commit
 386        object>>). This is sometimes useful when you are interested only in the
 387        recent history of a project even though the real history recorded in the
 388        upstream is much larger. A shallow repository
 389        is created by giving the `--depth` option to linkgit:git-clone[1], and
 390        its history can be later deepened with linkgit:git-fetch[1].
 391
 392[[def_symref]]symref::
 393        Symbolic reference: instead of containing the <<def_SHA1,SHA1>>
 394        id itself, it is of the format 'ref: refs/some/thing' and when
 395        referenced, it recursively dereferences to this reference.
 396        '<<def_HEAD,HEAD>>' is a prime example of a symref. Symbolic
 397        references are manipulated with the linkgit:git-symbolic-ref[1]
 398        command.
 399
 400[[def_tag]]tag::
 401        A <<def_ref,ref>> pointing to a <<def_tag_object,tag>> or
 402        <<def_commit_object,commit object>>. In contrast to a <<def_head,head>>,
 403        a tag is not changed by a <<def_commit,commit>>. Tags (not
 404        <<def_tag_object,tag objects>>) are stored in `$GIT_DIR/refs/tags/`. A
 405        git tag has nothing to do with a Lisp tag (which would be
 406        called an <<def_object_type,object type>> in git's context). A
 407        tag is most typically used to mark a particular point in the
 408        commit ancestry <<def_chain,chain>>.
 409
 410[[def_tag_object]]tag object::
 411        An <<def_object,object>> containing a <<def_ref,ref>> pointing to
 412        another object, which can contain a message just like a
 413        <<def_commit_object,commit object>>. It can also contain a (PGP)
 414        signature, in which case it is called a "signed tag object".
 415
 416[[def_topic_branch]]topic branch::
 417        A regular git <<def_branch,branch>> that is used by a developer to
 418        identify a conceptual line of development. Since branches are very easy
 419        and inexpensive, it is often desirable to have several small branches
 420        that each contain very well defined concepts or small incremental yet
 421        related changes.
 422
 423[[def_tracking_branch]]tracking branch::
 424        A regular git <<def_branch,branch>> that is used to follow changes from
 425        another <<def_repository,repository>>. A tracking
 426        branch should not contain direct modifications or have local commits
 427        made to it. A tracking branch can usually be
 428        identified as the right-hand-side <<def_ref,ref>> in a Pull:
 429        <<def_refspec,refspec>>.
 430
 431[[def_tree]]tree::
 432        Either a <<def_working_tree,working tree>>, or a <<def_tree_object,tree
 433        object>> together with the dependent <<def_blob_object,blob>> and tree objects
 434        (i.e. a stored representation of a working tree).
 435
 436[[def_tree_object]]tree object::
 437        An <<def_object,object>> containing a list of file names and modes along
 438        with refs to the associated blob and/or tree objects. A
 439        <<def_tree,tree>> is equivalent to a <<def_directory,directory>>.
 440
 441[[def_tree-ish]]tree-ish::
 442        A <<def_ref,ref>> pointing to either a <<def_commit_object,commit
 443        object>>, a <<def_tree_object,tree object>>, or a <<def_tag_object,tag
 444        object>> pointing to a tag or commit or tree object.
 445
 446[[def_unmerged_index]]unmerged index::
 447        An <<def_index,index>> which contains unmerged
 448        <<def_index_entry,index entries>>.
 449
 450[[def_unreachable_object]]unreachable object::
 451        An <<def_object,object>> which is not <<def_reachable,reachable>> from a
 452        <<def_branch,branch>>, <<def_tag,tag>>, or any other reference.
 453
 454[[def_working_tree]]working tree::
 455        The tree of actual checked out files.  The working tree is
 456        normally equal to the <<def_HEAD,HEAD>> plus any local changes
 457        that you have made but not yet committed.