Merge branch 'jc/add'
[gitweb.git] / Documentation / glossary.txt
index bac3c532fa86d3448d8bcd2eb9967472215d8297..02a9d9c18acaf1e6091049aaf6d2fd1f2490e573 100644 (file)
@@ -1,70 +1,83 @@
 object::
-       The unit of storage in GIT. It is uniquely identified by
+       The unit of storage in git. It is uniquely identified by
        the SHA1 of its contents. Consequently, an object can not
        be changed.
 
+object name::
+       The unique identifier of an object. The hash of the object's contents
+       using the Secure Hash Algorithm 1 and usually represented by the 40
+       character hexadecimal encoding of the hash of the object (possibly
+       followed by a white space).
+
 SHA1::
-       A 20-byte sequence (or 41-byte file containing the hex
-       representation and a newline). It is calculated from the
-       contents of an object by the Secure Hash Algorithm 1.
+       Synonym for object name.
 
-object database::
-       Stores a set of "objects", and an individial object is identified
-       by its SHA1 (its ref). The objects are either stored as single
-       files, or live inside of packs.
+object identifier::
+       Synonym for object name.
 
-object name::
-       Synonym for SHA1.
+hash::
+       In git's context, synonym to object name.
+
+object database::
+       Stores a set of "objects", and an individual object is identified
+       by its object name. The objects usually live in `$GIT_DIR/objects/`.
 
 blob object::
-       Untyped object, i.e. the contents of a file.
+       Untyped object, e.g. the contents of a file.
 
 tree object::
-       An object containing a list of blob and/or tree objects.
-       (A tree usually corresponds to a directory without
-       subdirectories).
+       An object containing a list of file names and modes along with refs
+       to the associated blob and/or tree objects. A tree is equivalent
+       to a directory.
 
 tree::
        Either a working tree, or a tree object together with the
        dependent blob and tree objects (i.e. a stored representation
        of a working tree).
 
-cache::
-       A collection of files whose contents are stored as objects.
-       The cache is a stored version of your working tree. Well, can
-       also contain a second, and even a third version of a working
-       tree, which are used when merging.
+DAG::
+       Directed acyclic graph. The commit objects form a directed acyclic
+       graph, because they have parents (directed), and the graph of commit
+       objects is acyclic (there is no chain which begins and ends with the
+       same object).
+
+index::
+       A collection of files with stat information, whose contents are
+       stored as objects. The index is a stored version of your working
+       tree. Truth be told, it can also contain a second, and even a third
+       version of a working tree, which are used when merging.
 
-cache entry::
+index entry::
        The information regarding a particular file, stored in the index.
-       A cache entry can be unmerged, if a merge was started, but not
-       yet finished (i.e. if the cache contains multiple versions of
+       An index entry can be unmerged, if a merge was started, but not
+       yet finished (i.e. if the index contains multiple versions of
        that file).
 
-index::
-       Contains information about the cache contents, in particular
-       timestamps and mode flags ("stat information") for the files
-       stored in the cache. An unmerged index is an index which contains
-       unmerged cache entries.
+unmerged index:
+       An index which contains unmerged index entries.
+
+cache::
+       Obsolete for: index.
 
 working tree::
-       The set of files and directories currently being worked on.
-       Think "ls -laR"
+       The set of files and directories currently being worked on,
+       i.e. you can work in your working tree without using git at all.
 
 directory::
        The list you get with "ls" :-)
 
-checkout::
-       The action of updating the working tree to a revision which was
-       stored in the object database.
-
 revision::
        A particular state of files and directories which was stored in
        the object database. It is referenced by a commit object.
 
+checkout::
+       The action of updating the working tree to a revision which was
+       stored in the object database.
+
 commit::
-       The action of storing the current state of the cache in the
+       As a verb: The action of storing the current state of the index in the
        object database. The result is a revision.
+       As a noun: Short hand for commit object.
 
 commit object::
        An object which contains the information about a particular
@@ -72,14 +85,15 @@ commit object::
        tree object which corresponds to the top directory of the
        stored revision.
 
+parent::
+       A commit object contains a (possibly empty) list of the logical
+       predecessor(s) in the line of development, i.e. its parents.
+
 changeset::
        BitKeeper/cvsps speak for "commit". Since git does not store
        changes, but states, it really does not make sense to use
        the term "changesets" with git.
 
-ent::
-       Favorite synonym to "tree-ish" by some total geeks.
-
 clean::
        A working tree is clean, if it corresponds to the revision
        referenced by the current head.
@@ -94,32 +108,50 @@ head::
 
 branch::
        A non-cyclical graph of revisions, i.e. the complete history of
-       a particular revision, which does not (yet) have children, which
-       is called the branch head. The branch heads are stored in
-       $GIT_DIR/refs/heads/.
+       a particular revision, which is called the branch head. The
+       branch heads are stored in `$GIT_DIR/refs/heads/`.
+
+master::
+       The default branch. Whenever you create a git repository, a branch
+       named "master" is created, and becomes the active branch. In most
+       cases, this contains the local development.
+
+origin::
+       The default upstream branch. Most projects have one upstream
+       project which they track, and by default 'origin' is used for
+       that purpose.  New updates from upstream will be fetched into
+       this branch; you should never commit to it yourself.
 
 ref::
        A 40-byte hex representation of a SHA1 pointing to a particular
-       object. These are stored in $GIT_DIR/refs/.
+       object. These may be stored in `$GIT_DIR/refs/`.
 
 head ref::
        A ref pointing to a head. Often, this is abbreviated to "head".
-       Head refs are stored in $GIT_DIR/refs/heads/.
+       Head refs are stored in `$GIT_DIR/refs/heads/`.
 
 tree-ish::
        A ref pointing to either a commit object, a tree object, or a
-       tag object pointing to a commit or tree object.
+       tag object pointing to a tag or commit or tree object.
+
+ent::
+       Favorite synonym to "tree-ish" by some total geeks. See
+       `http://en.wikipedia.org/wiki/Ent_(Middle-earth)` for an in-depth
+       explanation.
 
 tag object::
-       An object containing a ref pointing to another object. It can
-       contain a (PGP) signature, in which case it is called "signed
+       An object containing a ref pointing to another object, which can
+       contain a message just like a commit object. It can also
+       contain a (PGP) signature, in which case it is called a "signed
        tag object".
 
 tag::
        A ref pointing to a tag or commit object. In contrast to a head,
        a tag is not changed by a commit. Tags (not tag objects) are
-       stored in $GIT_DIR/refs/tags/. A git tag has nothing to do with
+       stored in `$GIT_DIR/refs/tags/`. A git tag has nothing to do with
        a Lisp tag (which is called object type in git's context).
+       A tag is most typically used to mark a particular point in the
+       commit ancestry chain.
 
 merge::
        To merge branches means to try to accumulate the changes since a
@@ -127,15 +159,37 @@ merge::
        merge uses heuristics to accomplish that. Evidently, an automatic
        merge can fail.
 
+octopus::
+       To merge more than two branches. Also denotes an intelligent
+       predator.
+
 resolve::
        The action of fixing up manually what a failed automatic merge
        left behind.
 
+rewind::
+       To throw away part of the development, i.e. to assign the head to
+       an earlier revision.
+
+rebase::
+       To clean a branch by starting from the head of the main line of
+       development ("master"), and reapply the (possibly cherry-picked)
+       changes from that branch.
+
 repository::
        A collection of refs together with an object database containing
-       all objects, which are reachable from the refs. A repository can
+       all objects, which are reachable from the refs, possibly accompanied
+       by meta data from one or more porcelains. A repository can
        share an object database with other repositories.
 
+git archive::
+       Synonym for repository (for arch people).
+
+file system::
+       Linus Torvalds originally designed git to be a user space file
+       system, i.e. the infrastructure to hold files and directories.
+       That ensured the efficiency and speed of git.
+
 alternate object database::
        Via the alternates mechanism, a repository can inherit part of its
        object database from another object database, which is called
@@ -150,10 +204,6 @@ chain::
        reference to its successor (for example, the successor of a commit
        could be one of its parents).
 
-parent::
-       A commit object contains a (possibly empty) list of the logical
-       predecessor(s) in the line of development, i.e. its parents.
-
 fetch::
        Fetching a branch means to get the branch's head ref from a
        remote repository, to find out which objects are missing from
@@ -176,8 +226,12 @@ pack::
        space or to transmit them efficiently).
 
 pack index::
-       Contains offsets into a pack, so the pack can be used instead of
-       the unpacked objects.
+       The list of identifiers, and other information, of the objects in a
+       pack, to assist in efficiently accessing the contents of a pack. 
+
+core git::
+       Fundamental data structures and utilities of git. Exposes only
+       limited source code management tools.
 
 plumbing::
        Cute name for core git.
@@ -196,3 +250,4 @@ SCM::
 
 dircache::
        You are *waaaaay* behind.
+