# info > GITGLOSSARY

---
type: CommandReference
command: gitglossary
mode: man
section: 7
source: man-pages
---

## Quick Reference
- `commit` — A single point in Git history; a snapshot of the project’s state.
- `branch` — A line of development; its tip is the most recent commit.
- `HEAD` — The current branch or detached commit; basis for the working tree.
- `index` — Staging area containing a stored version of the working tree.
- `merge` — Bringing changes from another branch into the current branch, creating a merge commit if not fast-forward.
- `remote` — A repository elsewhere that tracks the same project; default name `origin`.
- `repository` — Collection of refs and object database holding project history.
- `rebase` — Reapply a series of changes from a branch to a different base, rewriting history.

## Name
gitglossary - A Git Glossary

## Synopsis
*

## Glossary
- `alternate object database` — Via the alternates mechanism, a repository can inherit part of its object database from another.
- `bare repository` — A repository directory with `.git` suffix, containing Git administrative files directly, with no checked-out working tree.
- `blob object` — Untyped object, e.g. the contents of a file.
- `branch` — A line of development; the most recent commit is its tip, referenced by a branch head. A repository can track many branches; the working tree is associated with the current branch, and `HEAD` points to it.
- `cache` — Obsolete for `index`.
- `chain` — A list of objects, each containing a reference to its successor.
- `changeset` — BitKeeper/cvsps term for "commit". Git does not store changes, so the term does not apply.
- `checkout` — The action of updating the working tree, index, and `HEAD` from the object database.
- `cherry-picking` — Selecting a subset of changes from a series of commits and recording them on a different base. Performed by `git cherry-pick`.
- `clean` — A working tree that corresponds to the revision referenced by the current `HEAD`.
- `commit` — Noun: a single point in Git history; the entire history is a set of interrelated commits. Also used as a short hand for `commit object`. Verb: creating a new commit representing the current index and advancing `HEAD`.
- `commit object` — An object containing revision information: parents, author, committer, date, and the tree object of the top directory of the stored revision.
- `commit-ish` (also `committish`) — A commit object, or an object that can be recursively dereferenced to a commit (e.g. a tag that points to a commit).
- `core Git` — Fundamental data structures and utilities of Git, exposing limited source code management tools.
- `DAG` — Directed acyclic graph. The commit objects form a DAG because they have parents (directed) and there is no cycle.
- `dangling object` — An unreachable object that is not reachable even from other unreachable objects; no references to it exist in the repository.
- `detached HEAD` — State where `HEAD` points directly to a commit, not a branch. Commands that update history work, but branch-related commands (e.g. setting upstream) do not.
- `directory` — The list you get with `ls` :-)
- `dirty` — A working tree that contains uncommitted modifications.
- `evil merge` — A merge that introduces changes not present in any parent.
- `fast-forward` — A merge where the branch being merged is a descendant of the current branch; no new merge commit is created, only the branch pointer is updated. Common on remote-tracking branches.
- `fetch` — Retrieving a branch’s head ref from a remote repository and fetching missing objects. See [git-fetch(1)](http://localhost/phpMan.php/man/git-fetch/1/markdown).
- `file system` — Git was originally designed as a user-space file system to hold files and directories.
- `Git archive` — Synonym for `repository` (used by arch people).
- `gitfile` — A plain `.git` file at the root of a working tree that points to the real repository directory.
- `grafts` — Outdated mechanism to record fake ancestry information for commits. Replaced by [git-replace(1)](http://localhost/phpMan.php/man/git-replace/1/markdown).
- `hash` — Synonym for `object name`.
- `head` — A named reference to the commit at the tip of a branch. Stored in `$GIT_DIR/refs/heads/`, except when using packed refs. See [git-pack-refs(1)](http://localhost/phpMan.php/man/git-pack-refs/1/markdown).
- `HEAD` — The current branch; normally a reference to one of the heads. In detached HEAD state, it directly references an arbitrary commit. The working tree is derived from the tree referred to by `HEAD`.
- `head ref` — Synonym for `head`.
- `hook` — Optional scripts called during execution of Git commands, located in `$GIT_DIR/hooks/`. Enabled by removing the `.sample` suffix.
- `index` — A collection of files with stat information, whose contents are stored as objects. It is a stored version of the working tree and can contain multiple versions during a merge.
- `index entry` — Information about a file in the index. Can be unmerged if a merge is in progress.
- `master` — The default development branch. Created automatically when a repository is initialized.
- `merge` — Verb: to bring the contents of another branch into the current branch. If the merged-in branch is from a different repository, fetching is done first; the combination of fetch and merge is called a pull. Automatic, but conflicts may require manual resolution. Noun: unless fast-forward, the new commit resulting from a merge, with multiple parents (a merge commit).
- `object` — The unit of storage in Git, uniquely identified by the SHA-1 of its contents. Immutable.
- `object database` — Stores objects, usually in `$GIT_DIR/objects/`.
- `object identifier` — Synonym for `object name`.
- `object name` — The unique identifier of an object, represented by a 40-character hexadecimal string. Also called SHA-1.
- `object type` — One of `commit`, `tree`, `tag`, or `blob`.
- `octopus` — Merging more than two branches.
- `origin` — The default upstream repository. Fetched into remote-tracking branches named `origin/<branch>`.
- `overlay` — Only update and add files to the working directory, but do not delete them. Default checkout mode. The opposite, no-overlay, also deletes tracked files not present in the source.
- `pack` — A set of objects compressed into one file to save space or to transmit efficiently.
- `pack index` — List of identifiers and other information of objects in a pack, to assist access.
- `pathspec` — Pattern used to limit paths in Git commands. Syntax: directory prefix up to the last slash, then a pattern matched via [fnmatch(3)](http://localhost/phpMan.php/man/fnmatch/3/markdown). Magic signatures: `top` (root-relative), `literal` (no wildcards), `icase` (case-insensitive), `glob` (shell glob with `**` for recursion; `**/foo` matches anywhere, `abc/**` matches everything inside `abc`, `a/**/b` matches `a/b`, `a/x/b`, etc.), `attr:` (attribute requirements; see [gitattributes(5)](http://localhost/phpMan.php/man/gitattributes/5/markdown)), `exclude` (ignore matching paths). Short form: `:<magic>:pattern`; long form: `:(<magic words>)pattern`. A lone colon means “no pathspec”. Glob and literal magic are incompatible.
- `parent` — A commit object’s logical predecessor(s) in the line of development.
- `pickaxe` — Diffcore option to select changes that add or delete a given text string. See [git-diff(1)](http://localhost/phpMan.php/man/git-diff/1/markdown).
- `plumbing` — Cute name for core Git.
- `porcelain` — High-level programs and suites that depend on core Git, presenting a more SCM-like interface.
- `per-worktree ref` — Refs that are per-working-tree, such as `HEAD` and refs starting with `refs/bisect/`.
- `pseudoref` — Files under `$GIT_DIR` (e.g. `MERGE_HEAD`, `CHERRY_PICK_HEAD`) that behave like refs but have all-caps names, contain a SHA-1, cannot be symbolic, and are updated by direct file writes. Readable via `git rev-parse`.
- `pull` — Fetching a branch and merging it. See [git-pull(1)](http://localhost/phpMan.php/man/git-pull/1/markdown).
- `push` — Updating a remote branch’s head ref with local objects, if the remote head is an ancestor. Otherwise fails.
- `reachable` — An object is reachable from another if it can be reached via a chain of tags, commits, or trees. All ancestors of a commit are reachable from it.
- `rebase` — Reapplying a series of changes from a branch to a different base and resetting the head of that branch.
- `ref` — A name beginning with `refs/` (e.g. `refs/heads/master`) that points to an object name or another ref (symbolic ref). Special refs like `HEAD` do not start with `refs/`. See [gitrevisions(7)](http://localhost/phpMan.php/man/gitrevisions/7/markdown).
- `reflog` — The local “history” of a ref, showing what the ref pointed to at various times. See [git-reflog(1)](http://localhost/phpMan.php/man/git-reflog/1/markdown).
- `refspec` — A mapping between remote ref and local ref used by fetch and push.
- `remote repository` — A repository that tracks the same project but resides elsewhere.
- `remote-tracking branch` — A ref like `refs/remotes/<remote>/<branch>` that follows changes from another repository. Should not be directly modified.
- `repository` — A collection of refs together with an object database containing all reachable objects, possibly with metadata from porcelains. Can share an object database via alternates.
- `resolve` — Fixing up a failed automatic merge manually.
- `revision` — Synonym for `commit` (noun).
- `rewind` — Assigning the head to an earlier revision, discarding later commits.
- `SCM` — Source code management (tool).
- `SHA-1` — Secure Hash Algorithm 1; a cryptographic hash function. In Git, synonym for `object name`.
- `shallow clone` — A clone created with `--depth`, resulting in a shallow repository.
- `shallow repository` — A repository with incomplete history where some parent edges are cauterized. Created with `git clone --depth` and deepened with [git-fetch(1)](http://localhost/phpMan.php/man/git-fetch/1/markdown).
- `stash entry` — An object used to temporarily store the contents of a dirty working directory and index for future reuse.
- `submodule` — A repository that holds the history of a separate project inside another repository (the superproject).
- `superproject` — A repository that references submodules in its working tree.
- `symref` — Symbolic reference of the form `ref: refs/some/thing`; dereferences recursively to the target. `HEAD` is a prime example. Manipulated with [git-symbolic-ref(1)](http://localhost/phpMan.php/man/git-symbolic-ref/1/markdown).
- `tag` — A ref under `refs/tags/` pointing to an object (typically a commit or tag). Not updated by commit. Used to mark specific points in history.
- `tag object` — An object containing a ref pointing to another object, possibly with a message and a (PGP) signature (signed tag object).
- `topic branch` — A regular branch used by a developer to isolate a conceptual line of development.
- `tree` — Either a working tree, or a tree object together with the dependent blob and tree objects (a stored representation of a working tree).
- `tree object` — An object containing a list of file names, modes, and refs to associated blob and tree objects. Equivalent to a directory.
- `tree-ish` (also `treeish`) — A tree object or an object that can be recursively dereferenced to a tree (e.g. a commit-ish).
- `unmerged index` — An index containing unmerged index entries.
- `unreachable object` — An object not reachable from any branch, tag, or other reference.
- `upstream branch` — The default branch merged into the branch in question (or the branch rebased onto). Configured via `branch.<name>.remote` and `branch.<name>.merge`.
- `working tree` — The tree of actually checked-out files. Contains the contents of the `HEAD` commit’s tree plus any local uncommitted changes.

## See Also
- [gittutorial(7)](http://localhost/phpMan.php/man/gittutorial/7/markdown)
- [gittutorial-2(7)](http://localhost/phpMan.php/man/gittutorial-2/7/markdown)
- [gitcvs-migration(7)](http://localhost/phpMan.php/man/gitcvs-migration/7/markdown)
- [giteveryday(7)](http://localhost/phpMan.php/man/giteveryday/7/markdown)
- [The Git User’s Manual](file:///usr/share/doc/git/html/user-manual.html)