| alternate object database:: |
| Via the alternates mechanism, a repository can inherit part of its |
| 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. |
| |
| branch:: |
| A non-cyclical graph of revisions, i.e. the complete history of |
| a particular revision, which is called the branch head. The |
| branch heads are stored in `$GIT_DIR/refs/heads/`. |
| |
| cache:: |
| Obsolete for: index. |
| |
| chain:: |
| A list of objects, where each object in the list contains a |
| reference to its successor (for example, the successor of a commit |
| could be one of 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. |
| |
| 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". |
| |
| commit:: |
| 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 |
| revision, such as parents, committer, author, date and the |
| tree object which corresponds to the top directory of the |
| stored revision. |
| |
| core git:: |
| Fundamental data structures and utilities of git. Exposes only |
| limited source code management tools. |
| |
| 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). |
| |
| dircache:: |
| You are *waaaaay* behind. |
| |
| dirty:: |
| A working tree is said to be dirty if it contains modifications |
| which have not been committed to the current branch. |
| |
| directory:: |
| The list you get with "ls" :-) |
| |
| ent:: |
| Favorite synonym to "tree-ish" by some total geeks. See |
| `http://en.wikipedia.org/wiki/Ent_(Middle-earth)` for an in-depth |
| 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 |
| remote repository, to find out which objects are missing from |
| the local object database, and to get them, too. |
| |
| 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. |
| |
| 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. |
| |
| head:: |
| The top of a branch. It contains a ref to the corresponding |
| commit object. |
| |
| 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 |
| tree. Truth be told, it can also contain a second, and even a third |
| version of a working tree, which are used when merging. |
| |
| index entry:: |
| The information regarding a particular file, stored in the index. |
| 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). |
| |
| master:: |
| 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 |
| common ancestor and apply them to the first branch. An automatic |
| merge uses heuristics to accomplish that. Evidently, an automatic |
| merge can fail. |
| |
| object:: |
| The unit of storage in git. It is uniquely identified by |
| the SHA1 of its contents. Consequently, an object can not |
| be changed. |
| |
| 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/`. |
| |
| object identifier:: |
| Synonym for object name. |
| |
| 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). |
| |
| object type:: |
| One of the identifiers "commit","tree","tag" and "blob" describing |
| the type of an object. |
| |
| octopus:: |
| To merge more than two branches. Also denotes an intelligent |
| predator. |
| |
| origin:: |
| 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 |
| space or to transmit them efficiently). |
| |
| pack index:: |
| The list of identifiers, and other information, of the objects in a |
| pack, to assist in efficiently accessing the contents of a pack. |
| |
| 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. |
| |
| porcelain:: |
| Cute name for programs and program suites depending on core git, |
| presenting a high level access to core git. Porcelains expose |
| more of a SCM interface than the plumbing. |
| |
| pull:: |
| Pulling a branch means to fetch it and merge it. |
| |
| push:: |
| Pushing a branch means to get the branch's head ref from a remote |
| repository, find out if it is an ancestor to the branch's local |
| head ref is a direct, and in that case, putting all objects, which |
| are reachable from the local head ref, and which are missing from |
| the remote repository, into the remote object database, and updating |
| the remote head ref. If the remote head is not an ancestor to the |
| local head, the push fails. |
| |
| reachable:: |
| 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 |
| development ("master"), and reapply the (possibly cherry-picked) |
| changes from that branch. |
| |
| ref:: |
| 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 |
| 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. |
| |
| resolve:: |
| The action of fixing up manually what a failed automatic merge |
| left behind. |
| |
| revision:: |
| A particular state of files and directories which was stored in |
| the object database. It is referenced by a commit object. |
| |
| rewind:: |
| To throw away part of the development, i.e. to assign the head to |
| an earlier revision. |
| |
| SCM:: |
| Source code management (tool). |
| |
| SHA1:: |
| Synonym for object name. |
| |
| 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 |
| 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). |
| |
| tree-ish:: |
| A ref pointing to either a commit object, a tree object, or a |
| tag object pointing to a tag or commit or tree object. |
| |
| tag object:: |
| 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 |
| 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. |
| |
| unmerged index:: |
| An index which contains unmerged index entries. |
| |
| working tree:: |
| The set of files and directories currently being worked on, |
| i.e. you can work in your working tree without using git at all. |
| |