Document 'git-blame --incremental'
[gitweb.git] / Documentation / glossary.txt
index aa1648effbbdcc3b5506553b0f758d4650997eef..d20eb6270cd795ab61b281154a7e24070519b7fb 100644 (file)
@@ -3,6 +3,17 @@ alternate object database::
        object database from another object database, which is called
        "alternate".
 
+bare repository::
+       A bare repository is normally an appropriately named
+       directory with a `.git` suffix that does not have a
+       locally checked-out copy of any of the files under revision
+       control.  That is, all of the `git` administrative and
+       control files that would normally be present in the
+       hidden `.git` sub-directory are directly present in
+       the `repository.git` directory instead, and no other files
+       are present and checked out.  Usually publishers of public
+       repositories make bare repositories available.
+
 blob object::
        Untyped object, e.g. the contents of a file.
 
@@ -28,6 +39,15 @@ checkout::
        The action of updating the working tree to a revision which was
        stored in the object database.
 
+cherry-picking::
+       In SCM jargon, "cherry pick" means to choose a subset of
+       changes out of a series of changes (typically commits)
+       and record them as a new series of changes on top of
+       different codebase.  In GIT, this is performed by
+       "git cherry-pick" command to extract the change
+       introduced by an existing commit and to record it based
+       on the tip of the current branch as a new commit.
+
 clean::
        A working tree is clean, if it corresponds to the revision
        referenced by the current head.  Also see "dirty".
@@ -66,7 +86,15 @@ directory::
 ent::
        Favorite synonym to "tree-ish" by some total geeks. See
        `http://en.wikipedia.org/wiki/Ent_(Middle-earth)` for an in-depth
-       explanation.
+       explanation.  Avoid this term, not to confuse people.
+
+fast forward::
+       A fast-forward is a special type of merge where you have
+       a revision and you are "merging" another branch's changes
+       that happen to be a descendant of what you have.
+       In such these cases, you do not make a new merge commit but
+       instead just update to his revision. This will happen
+       frequently on a tracking branch of a remote repository.
 
 fetch::
        Fetching a branch means to get the branch's head ref from a
@@ -81,6 +109,13 @@ file system::
 git archive::
        Synonym for repository (for arch people).
 
+grafts::
+       Grafts enables two otherwise different lines of development to be
+       joined together by recording fake ancestry information for commits.
+       This way you can make git pretend the set of parents a commit
+       has is different from what was recorded when the commit was created.
+       Configured via the `.git/info/grafts` file.
+
 hash::
        In git's context, synonym to object name.
 
@@ -92,6 +127,16 @@ head ref::
        A ref pointing to a head. Often, this is abbreviated to "head".
        Head refs are stored in `$GIT_DIR/refs/heads/`.
 
+hook::
+       During the normal execution of several git commands,
+       call-outs are made to optional scripts that allow
+       a developer to add functionality or checking.
+       Typically, the hooks allow for a command to be pre-verified
+       and potentially aborted, and allow for a post-notification
+       after the operation is done.
+       The hook scripts are found in the `$GIT_DIR/hooks/` directory,
+       and are enabled by simply making them executable.
+
 index::
        A collection of files with stat information, whose contents are
        stored as objects. The index is a stored version of your working
@@ -105,10 +150,10 @@ index entry::
        that file).
 
 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.
-
+       The default development 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, though that is purely conventional and not required.
 
 merge::
        To merge branches means to try to accumulate the changes since a
@@ -134,7 +179,7 @@ object name::
        character hexadecimal encoding of the hash of the object (possibly
        followed by a white space).
 
-object type:
+object type::
        One of the identifiers "commit","tree","tag" and "blob" describing
        the type of an object.
 
@@ -143,10 +188,12 @@ octopus::
        predator.
 
 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.
+       The default upstream repository. Most projects have at
+       least one upstream project which they track. By default
+       'origin' is used for that purpose.  New upstream updates
+       will be fetched into remote tracking branches named
+       origin/name-of-upstream-branch, which you can see using
+       "git branch -r".
 
 pack::
        A set of objects which have been compressed into one file (to save
@@ -160,6 +207,13 @@ parent::
        A commit object contains a (possibly empty) list of the logical
        predecessor(s) in the line of development, i.e. its parents.
 
+pickaxe::
+       The term pickaxe refers to an option to the diffcore routines
+       that help select changes that add or delete a given text string.
+       With the --pickaxe-all option, it can be used to view the
+       full changeset that introduced or removed, say, a particular
+       line of text.  See gitlink:git-diff[1].
+
 plumbing::
        Cute name for core git.
 
@@ -181,8 +235,11 @@ push::
        local head, the push fails.
 
 reachable::
-       An object is reachable from a ref/commit/tree/tag, if there is a
-       chain leading from the latter to the former.
+       All of the ancestors of a given commit are said to be reachable from
+       that commit.  More generally, one object is reachable from another if
+       we can reach the one from the other by a chain that follows tags to
+       whatever they tag, commits to their parents or trees, and trees to the
+       trees or blobs that they contain.
 
 rebase::
        To clean a branch by starting from the head of the main line of
@@ -190,8 +247,20 @@ rebase::
        changes from that branch.
 
 ref::
-       A 40-byte hex representation of a SHA1 pointing to a particular
-       object. These may be stored in `$GIT_DIR/refs/`.
+       A 40-byte hex representation of a SHA1 or a name that denotes
+       a particular object. These may be stored in `$GIT_DIR/refs/`.
+
+refspec::
+       A refspec is used by fetch and push to describe the mapping
+       between remote ref and local ref.  They are combined with
+       a colon in the format <src>:<dst>, preceded by an optional
+       plus sign, +.  For example:
+       `git fetch $URL refs/heads/master:refs/heads/origin`
+       means "grab the master branch head from the $URL and store
+       it as my origin branch head".
+       And `git push $URL refs/heads/master:refs/heads/to-upstream`
+       means "publish my master branch head as to-upstream branch
+       at $URL".   See also gitlink:git-push[1]
 
 repository::
        A collection of refs together with an object database containing
@@ -217,6 +286,39 @@ SCM::
 SHA1::
        Synonym for object name.
 
+shallow repository::
+       A shallow repository has an incomplete history some of
+       whose commits have parents cauterized away (in other
+       words, git is told to pretend that these commits do not
+       have the parents, even though they are recorded in the
+       commit object).  This is sometimes useful when you are
+       interested only in the recent history of a project even
+       though the real history recorded in the upstream is
+       much larger.  A shallow repository is created by giving
+       `--depth` option to gitlink:git-clone[1], and its
+       history can be later deepened with gitlink:git-fetch[1].
+
+symref::
+       Symbolic reference: instead of containing the SHA1 id itself, it
+       is of the format 'ref: refs/some/thing' and when referenced, it
+       recursively dereferences to this reference. 'HEAD' is a prime
+       example of a symref. Symbolic references are manipulated with
+       the gitlink:git-symbolic-ref[1] command.
+
+topic branch::
+       A regular git branch that is used by a developer to
+       identify a conceptual line of development.  Since branches
+       are very easy and inexpensive, it is often desirable to
+       have several small branches that each contain very well
+       defined concepts or small incremental yet related changes.
+
+tracking branch::
+       A regular git branch that is used to follow changes from
+       another repository.  A tracking branch should not contain
+       direct modifications or have local commits made to it.
+       A tracking branch can usually be identified as the
+       right-hand-side ref in a Pull: refspec.
+
 tree object::
        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
@@ -245,7 +347,7 @@ tag::
        A tag is most typically used to mark a particular point in the
        commit ancestry chain.
 
-unmerged index:
+unmerged index::
        An index which contains unmerged index entries.
 
 working tree::