diff --git a/git/gitglossary-booklet.pdf b/git/gitglossary-booklet.pdf new file mode 100644 index 0000000..6806695 Binary files /dev/null and b/git/gitglossary-booklet.pdf differ diff --git a/git/gitglossary.7 b/git/gitglossary.7 new file mode 100644 index 0000000..c8b9cdd --- /dev/null +++ b/git/gitglossary.7 @@ -0,0 +1,1092 @@ +'\" t +.\" Title: gitglossary +.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] +.\" Generator: DocBook XSL Stylesheets v1.79.1 +.\" Date: 03/04/2021 +.\" Manual: Git Manual +.\" Source: Git 2.25.1 +.\" Language: English +.\" +.TH "GITGLOSSARY" "7" "03/04/2021" "Git 2\&.25\&.1" "Git Manual" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +gitglossary \- A Git Glossary +.SH "SYNOPSIS" +.sp +* +.SH "DESCRIPTION" +.PP +alternate object database +.RS 4 +Via the alternates mechanism, a +repository +can inherit part of its +object database +from another object database, which is called an "alternate"\&. +.RE +.PP +bare repository +.RS 4 +A bare repository is normally an appropriately named +directory +with a +\fB\&.git\fR +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 +\fB\&.git\fR +sub\-directory are directly present in the +\fBrepository\&.git\fR +directory instead, and no other files are present and checked out\&. Usually publishers of public repositories make bare repositories available\&. +.RE +.PP +blob object +.RS 4 +Untyped +object, e\&.g\&. the contents of a file\&. +.RE +.PP +branch +.RS 4 +A "branch" is an active line of development\&. The most recent +commit +on a branch is referred to as the tip of that branch\&. The tip of the branch is referenced by a branch +head, which moves forward as additional development is done on the branch\&. A single Git +repository +can track an arbitrary number of branches, but your +working tree +is associated with just one of them (the "current" or "checked out" branch), and +HEAD +points to that branch\&. +.RE +.PP +cache +.RS 4 +Obsolete for: +index\&. +.RE +.PP +chain +.RS 4 +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)\&. +.RE +.PP +changeset +.RS 4 +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\&. +.RE +.PP +checkout +.RS 4 +The action of updating all or part of the +working tree +with a +tree object +or +blob +from the +object database, and updating the +index +and +HEAD +if the whole working tree has been pointed at a new +branch\&. +.RE +.PP +cherry\-picking +.RS 4 +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 a different codebase\&. In Git, this is performed by the "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\&. +.RE +.PP +clean +.RS 4 +A +working tree +is clean, if it corresponds to the +revision +referenced by the current +head\&. Also see "dirty"\&. +.RE +.PP +commit +.RS 4 +As a noun: A single point in the Git history; the entire history of a project is represented as a set of interrelated commits\&. The word "commit" is often used by Git in the same places other revision control systems use the words "revision" or "version"\&. Also used as a short hand for +commit object\&. +.sp +As a verb: The action of storing a new snapshot of the project\(cqs state in the Git history, by creating a new commit representing the current state of the +index +and advancing +HEAD +to point at the new commit\&. +.RE +.PP +commit object +.RS 4 +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\&. +.RE +.PP +commit\-ish (also committish) +.RS 4 +A +commit object +or an +object +that can be recursively dereferenced to a commit object\&. The following are all commit\-ishes: a commit object, a +tag object +that points to a commit object, a tag object that points to a tag object that points to a commit object, etc\&. +.RE +.PP +core Git +.RS 4 +Fundamental data structures and utilities of Git\&. Exposes only limited source code management tools\&. +.RE +.PP +DAG +.RS 4 +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)\&. +.RE +.PP +dangling object +.RS 4 +An +unreachable object +which is not +reachable +even from other unreachable objects; a dangling object has no references to it from any reference or +object +in the +repository\&. +.RE +.PP +detached HEAD +.RS 4 +Normally the +HEAD +stores the name of a +branch, and commands that operate on the history HEAD represents operate on the history leading to the tip of the branch the HEAD points at\&. However, Git also allows you to +check out +an arbitrary +commit +that isn\(cqt necessarily the tip of any particular branch\&. The HEAD in such a state is called "detached"\&. +.sp +Note that commands that operate on the history of the current branch (e\&.g\&. +\fBgit commit\fR +to build a new history on top of it) still work while the HEAD is detached\&. They update the HEAD to point at the tip of the updated history without affecting any branch\&. Commands that update or inquire information +\fIabout\fR +the current branch (e\&.g\&. +\fBgit branch \-\-set\-upstream\-to\fR +that sets what remote\-tracking branch the current branch integrates with) obviously do not work, as there is no (real) current branch to ask about in this state\&. +.RE +.PP +directory +.RS 4 +The list you get with "ls" :\-) +.RE +.PP +dirty +.RS 4 +A +working tree +is said to be "dirty" if it contains modifications which have not been +committed +to the current +branch\&. +.RE +.PP +evil merge +.RS 4 +An evil merge is a +merge +that introduces changes that do not appear in any +parent\&. +.RE +.PP +fast\-forward +.RS 4 +A fast\-forward is a special type of +merge +where you have a +revision +and you are "merging" another +branch\*(Aqs changes that happen to be a descendant of what you have\&. In such a case, you do not make a new +merge +commit +but instead just update to his revision\&. This will happen frequently on a +remote\-tracking branch +of a remote +repository\&. +.RE +.PP +fetch +.RS 4 +Fetching a +branch +means to get the branch\(cqs +head ref +from a remote +repository, to find out which objects are missing from the local +object database, and to get them, too\&. See also +\fBgit-fetch\fR(1)\&. +.RE +.PP +file system +.RS 4 +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\&. +.RE +.PP +Git archive +.RS 4 +Synonym for +repository +(for arch people)\&. +.RE +.PP +gitfile +.RS 4 +A plain file +\fB\&.git\fR +at the root of a working tree that points at the directory that is the real repository\&. +.RE +.PP +grafts +.RS 4 +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 +\fB\&.git/info/grafts\fR +file\&. +.sp +Note that the grafts mechanism is outdated and can lead to problems transferring objects between repositories; see +\fBgit-replace\fR(1) +for a more flexible and robust system to do the same thing\&. +.RE +.PP +hash +.RS 4 +In Git\(cqs context, synonym for +object name\&. +.RE +.PP +head +.RS 4 +A +named reference +to the +commit +at the tip of a +branch\&. Heads are stored in a file in +\fB$GIT_DIR/refs/heads/\fR +directory, except when using packed refs\&. (See +\fBgit-pack-refs\fR(1)\&.) +.RE +.PP +HEAD +.RS 4 +The current +branch\&. In more detail: Your +working tree +is normally derived from the state of the tree referred to by HEAD\&. HEAD is a reference to one of the +heads +in your repository, except when using a +detached HEAD, in which case it directly references an arbitrary commit\&. +.RE +.PP +head ref +.RS 4 +A synonym for +head\&. +.RE +.PP +hook +.RS 4 +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 +\fB$GIT_DIR/hooks/\fR +directory, and are enabled by simply removing the +\fB\&.sample\fR +suffix from the filename\&. In earlier versions of Git you had to make them executable\&. +.RE +.PP +index +.RS 4 +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\&. +.RE +.PP +index entry +.RS 4 +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)\&. +.RE +.PP +master +.RS 4 +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 by convention and is not required\&. +.RE +.PP +merge +.RS 4 +As a verb: To bring the contents of another +branch +(possibly from an external +repository) into the current branch\&. In the case where the merged\-in branch is from a different repository, this is done by first +fetching +the remote branch and then merging the result into the current branch\&. This combination of fetch and merge operations is called a +pull\&. Merging is performed by an automatic process that identifies changes made since the branches diverged, and then applies all those changes together\&. In cases where changes conflict, manual intervention may be required to complete the merge\&. +.sp +As a noun: unless it is a +fast\-forward, a successful merge results in the creation of a new +commit +representing the result of the merge, and having as +parents +the tips of the merged +branches\&. This commit is referred to as a "merge commit", or sometimes just a "merge"\&. +.RE +.PP +object +.RS 4 +The unit of storage in Git\&. It is uniquely identified by the +SHA\-1 +of its contents\&. Consequently, an object cannot be changed\&. +.RE +.PP +object database +.RS 4 +Stores a set of "objects", and an individual +object +is identified by its +object name\&. The objects usually live in +\fB$GIT_DIR/objects/\fR\&. +.RE +.PP +object identifier +.RS 4 +Synonym for +object name\&. +.RE +.PP +object name +.RS 4 +The unique identifier of an +object\&. The object name is usually represented by a 40 character hexadecimal string\&. Also colloquially called +SHA\-1\&. +.RE +.PP +object type +.RS 4 +One of the identifiers "commit", "tree", "tag" or "blob" describing the type of an +object\&. +.RE +.PP +octopus +.RS 4 +To +merge +more than two +branches\&. +.RE +.PP +origin +.RS 4 +The default upstream +repository\&. Most projects have at least one upstream project which they track\&. By default +\fIorigin\fR +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 +\fBgit branch \-r\fR\&. +.RE +.PP +overlay +.RS 4 +Only update and add files to the working directory, but don\(cqt delete them, similar to how +\fIcp \-R\fR +would update the contents in the destination directory\&. This is the default mode in a +checkout +when checking out files from the +index +or a +tree\-ish\&. In contrast, no\-overlay mode also deletes tracked files not present in the source, similar to +\fIrsync \-\-delete\fR\&. +.RE +.PP +pack +.RS 4 +A set of objects which have been compressed into one file (to save space or to transmit them efficiently)\&. +.RE +.PP +pack index +.RS 4 +The list of identifiers, and other information, of the objects in a +pack, to assist in efficiently accessing the contents of a pack\&. +.RE +.PP +pathspec +.RS 4 +Pattern used to limit paths in Git commands\&. +.sp +Pathspecs are used on the command line of "git ls\-files", "git ls\-tree", "git add", "git grep", "git diff", "git checkout", and many other commands to limit the scope of operations to some subset of the tree or worktree\&. See the documentation of each command for whether paths are relative to the current directory or toplevel\&. The pathspec syntax is as follows: +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +any path matches itself +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +the pathspec up to the last slash represents a directory prefix\&. The scope of that pathspec is limited to that subtree\&. +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +the rest of the pathspec is a pattern for the remainder of the pathname\&. Paths relative to the directory prefix will be matched against that pattern using fnmatch(3); in particular, +\fI*\fR +and +\fI?\fR +\fIcan\fR +match directory separators\&. +.RE +.sp +For example, Documentation/*\&.jpg will match all \&.jpg files in the Documentation subtree, including Documentation/chapter_1/figure_1\&.jpg\&. +.sp +A pathspec that begins with a colon +\fB:\fR +has special meaning\&. In the short form, the leading colon +\fB:\fR +is followed by zero or more "magic signature" letters (which optionally is terminated by another colon +\fB:\fR), and the remainder is the pattern to match against the path\&. The "magic signature" consists of ASCII symbols that are neither alphanumeric, glob, regex special characters nor colon\&. The optional colon that terminates the "magic signature" can be omitted if the pattern begins with a character that does not belong to "magic signature" symbol set and is not a colon\&. +.sp +In the long form, the leading colon +\fB:\fR +is followed by an open parenthesis +\fB(\fR, a comma\-separated list of zero or more "magic words", and a close parentheses +\fB)\fR, and the remainder is the pattern to match against the path\&. +.sp +A pathspec with only a colon means "there is no pathspec"\&. This form should not be combined with other pathspec\&. +.PP +top +.RS 4 +The magic word +\fBtop\fR +(magic signature: +\fB/\fR) makes the pattern match from the root of the working tree, even when you are running the command from inside a subdirectory\&. +.RE +.PP +literal +.RS 4 +Wildcards in the pattern such as +\fB*\fR +or +\fB?\fR +are treated as literal characters\&. +.RE +.PP +icase +.RS 4 +Case insensitive match\&. +.RE +.PP +glob +.RS 4 +Git treats the pattern as a shell glob suitable for consumption by fnmatch(3) with the FNM_PATHNAME flag: wildcards in the pattern will not match a / in the pathname\&. For example, "Documentation/*\&.html" matches "Documentation/git\&.html" but not "Documentation/ppc/ppc\&.html" or "tools/perf/Documentation/perf\&.html"\&. +.sp +Two consecutive asterisks ("\fB**\fR") in patterns matched against full pathname may have special meaning: +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +A leading "\fB**\fR" followed by a slash means match in all directories\&. For example, "\fB**/foo\fR" matches file or directory "\fBfoo\fR" anywhere, the same as pattern "\fBfoo\fR"\&. "\fB**/foo/bar\fR" matches file or directory "\fBbar\fR" anywhere that is directly under directory "\fBfoo\fR"\&. +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +A trailing "\fB/**\fR" matches everything inside\&. For example, "\fBabc/**\fR" matches all files inside directory "abc", relative to the location of the +\fB\&.gitignore\fR +file, with infinite depth\&. +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +A slash followed by two consecutive asterisks then a slash matches zero or more directories\&. For example, "\fBa/**/b\fR" matches "\fBa/b\fR", "\fBa/x/b\fR", "\fBa/x/y/b\fR" and so on\&. +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +Other consecutive asterisks are considered invalid\&. +.sp +Glob magic is incompatible with literal magic\&. +.RE +.RE +.PP +attr +.RS 4 +After +\fBattr:\fR +comes a space separated list of "attribute requirements", all of which must be met in order for the path to be considered a match; this is in addition to the usual non\-magic pathspec pattern matching\&. See +\fBgitattributes\fR(5)\&. +.sp +Each of the attribute requirements for the path takes one of these forms: +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +"\fBATTR\fR" requires that the attribute +\fBATTR\fR +be set\&. +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +"\fB\-ATTR\fR" requires that the attribute +\fBATTR\fR +be unset\&. +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +"\fBATTR=VALUE\fR" requires that the attribute +\fBATTR\fR +be set to the string +\fBVALUE\fR\&. +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +"\fB!ATTR\fR" requires that the attribute +\fBATTR\fR +be unspecified\&. +.sp +Note that when matching against a tree object, attributes are still obtained from working tree, not from the given tree object\&. +.RE +.RE +.PP +exclude +.RS 4 +After a path matches any non\-exclude pathspec, it will be run through all exclude pathspecs (magic signature: +\fB!\fR +or its synonym +\fB^\fR)\&. If it matches, the path is ignored\&. When there is no non\-exclude pathspec, the exclusion is applied to the result set as if invoked without any pathspec\&. +.RE +.RE +.PP +parent +.RS 4 +A +commit object +contains a (possibly empty) list of the logical predecessor(s) in the line of development, i\&.e\&. its parents\&. +.RE +.PP +pickaxe +.RS 4 +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 +\fB\-\-pickaxe\-all\fR +option, it can be used to view the full +changeset +that introduced or removed, say, a particular line of text\&. See +\fBgit-diff\fR(1)\&. +.RE +.PP +plumbing +.RS 4 +Cute name for +core Git\&. +.RE +.PP +porcelain +.RS 4 +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\&. +.RE +.PP +per\-worktree ref +.RS 4 +Refs that are per\-worktree, rather than global\&. This is presently only +HEAD +and any refs that start with +\fBrefs/bisect/\fR, but might later include other unusual refs\&. +.RE +.PP +pseudoref +.RS 4 +Pseudorefs are a class of files under +\fB$GIT_DIR\fR +which behave like refs for the purposes of rev\-parse, but which are treated specially by git\&. Pseudorefs both have names that are all\-caps, and always start with a line consisting of a +SHA\-1 +followed by whitespace\&. So, HEAD is not a pseudoref, because it is sometimes a symbolic ref\&. They might optionally contain some additional data\&. +\fBMERGE_HEAD\fR +and +\fBCHERRY_PICK_HEAD\fR +are examples\&. Unlike +per\-worktree refs, these files cannot be symbolic refs, and never have reflogs\&. They also cannot be updated through the normal ref update machinery\&. Instead, they are updated by directly writing to the files\&. However, they can be read as if they were refs, so +\fBgit rev\-parse MERGE_HEAD\fR +will work\&. +.RE +.PP +pull +.RS 4 +Pulling a +branch +means to +fetch +it and +merge +it\&. See also +\fBgit-pull\fR(1)\&. +.RE +.PP +push +.RS 4 +Pushing a +branch +means to get the branch\(cqs +head ref +from a remote +repository, find out if it is an ancestor to the branch\(cqs local head ref, 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\&. +.RE +.PP +reachable +.RS 4 +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\&. +.RE +.PP +rebase +.RS 4 +To reapply a series of changes from a +branch +to a different base, and reset the +head +of that branch to the result\&. +.RE +.PP +ref +.RS 4 +A name that begins with +\fBrefs/\fR +(e\&.g\&. +\fBrefs/heads/master\fR) that points to an +object name +or another ref (the latter is called a +symbolic ref)\&. For convenience, a ref can sometimes be abbreviated when used as an argument to a Git command; see +\fBgitrevisions\fR(7) +for details\&. Refs are stored in the +repository\&. +.sp +The ref namespace is hierarchical\&. Different subhierarchies are used for different purposes (e\&.g\&. the +\fBrefs/heads/\fR +hierarchy is used to represent local branches)\&. +.sp +There are a few special\-purpose refs that do not begin with +\fBrefs/\fR\&. The most notable example is +\fBHEAD\fR\&. +.RE +.PP +reflog +.RS 4 +A reflog shows the local "history" of a ref\&. In other words, it can tell you what the 3rd last revision in +\fIthis\fR +repository was, and what was the current state in +\fIthis\fR +repository, yesterday 9:14pm\&. See +\fBgit-reflog\fR(1) +for details\&. +.RE +.PP +refspec +.RS 4 +A "refspec" is used by +fetch +and +push +to describe the mapping between remote +ref +and local ref\&. +.RE +.PP +remote repository +.RS 4 +A +repository +which is used to track the same project but resides somewhere else\&. To communicate with remotes, see +fetch +or +push\&. +.RE +.PP +remote\-tracking branch +.RS 4 +A +ref +that is used to follow changes from another +repository\&. It typically looks like +\fIrefs/remotes/foo/bar\fR +(indicating that it tracks a branch named +\fIbar\fR +in a remote named +\fIfoo\fR), and matches the right\-hand\-side of a configured fetch +refspec\&. A remote\-tracking branch should not contain direct modifications or have local commits made to it\&. +.RE +.PP +repository +.RS 4 +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 via +alternates mechanism\&. +.RE +.PP +resolve +.RS 4 +The action of fixing up manually what a failed automatic +merge +left behind\&. +.RE +.PP +revision +.RS 4 +Synonym for +commit +(the noun)\&. +.RE +.PP +rewind +.RS 4 +To throw away part of the development, i\&.e\&. to assign the +head +to an earlier +revision\&. +.RE +.PP +SCM +.RS 4 +Source code management (tool)\&. +.RE +.PP +SHA\-1 +.RS 4 +"Secure Hash Algorithm 1"; a cryptographic hash function\&. In the context of Git used as a synonym for +object name\&. +.RE +.PP +shallow clone +.RS 4 +Mostly a synonym to +shallow repository +but the phrase makes it more explicit that it was created by running +\fBgit clone \-\-depth=\&.\&.\&.\fR +command\&. +.RE +.PP +shallow repository +.RS 4 +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 the +\fB\-\-depth\fR +option to +\fBgit-clone\fR(1), and its history can be later deepened with +\fBgit-fetch\fR(1)\&. +.RE +.PP +stash entry +.RS 4 +An +object +used to temporarily store the contents of a +dirty +working directory and the index for future reuse\&. +.RE +.PP +submodule +.RS 4 +A +repository +that holds the history of a separate project inside another repository (the latter of which is called +superproject)\&. +.RE +.PP +superproject +.RS 4 +A +repository +that references repositories of other projects in its working tree as +submodules\&. The superproject knows about the names of (but does not hold copies of) commit objects of the contained submodules\&. +.RE +.PP +symref +.RS 4 +Symbolic reference: instead of containing the +SHA\-1 +id itself, it is of the format +\fIref: refs/some/thing\fR +and when referenced, it recursively dereferences to this reference\&. +\fIHEAD\fR +is a prime example of a symref\&. Symbolic references are manipulated with the +\fBgit-symbolic-ref\fR(1) +command\&. +.RE +.PP +tag +.RS 4 +A +ref +under +\fBrefs/tags/\fR +namespace that points to an object of an arbitrary type (typically a tag points to either a +tag +or a +commit object)\&. In contrast to a +head, a tag is not updated by the +\fBcommit\fR +command\&. A Git tag has nothing to do with a Lisp tag (which would be called an +object type +in Git\(cqs context)\&. A tag is most typically used to mark a particular point in the commit ancestry +chain\&. +.RE +.PP +tag object +.RS 4 +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"\&. +.RE +.PP +topic branch +.RS 4 +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\&. +.RE +.PP +tree +.RS 4 +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)\&. +.RE +.PP +tree object +.RS 4 +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\&. +.RE +.PP +tree\-ish (also treeish) +.RS 4 +A +tree object +or an +object +that can be recursively dereferenced to a tree object\&. Dereferencing a +commit object +yields the tree object corresponding to the +revision\*(Aqs top +directory\&. The following are all tree\-ishes: a +commit\-ish, a tree object, a +tag object +that points to a tree object, a tag object that points to a tag object that points to a tree object, etc\&. +.RE +.PP +unmerged index +.RS 4 +An +index +which contains unmerged +index entries\&. +.RE +.PP +unreachable object +.RS 4 +An +object +which is not +reachable +from a +branch, +tag, or any other reference\&. +.RE +.PP +upstream branch +.RS 4 +The default +branch +that is merged into the branch in question (or the branch in question is rebased onto)\&. It is configured via branch\&.\&.remote and branch\&.\&.merge\&. If the upstream branch of +\fIA\fR +is +\fIorigin/B\fR +sometimes we say "\fIA\fR +is tracking +\fIorigin/B\fR"\&. +.RE +.PP +working tree +.RS 4 +The tree of actual checked out files\&. The working tree normally contains the contents of the +HEAD +commit\(cqs tree, plus any local changes that you have made but not yet committed\&. +.RE +.SH "SEE ALSO" +.sp +\fBgittutorial\fR(7), \fBgittutorial-2\fR(7), \fBgitcvs-migration\fR(7), \fBgiteveryday\fR(7), \m[blue]\fBThe Git User\(cqs Manual\fR\m[]\&\s-2\u[1]\d\s+2 +.SH "GIT" +.sp +Part of the \fBgit\fR(1) suite +.SH "NOTES" +.IP " 1." 4 +The Git User\(cqs Manual +.RS 4 +\%file:///usr/share/doc/git/html/user-manual.html +.RE diff --git a/git/gitglossary.7.gz b/git/gitglossary.7.gz new file mode 100644 index 0000000..8e0d156 Binary files /dev/null and b/git/gitglossary.7.gz differ diff --git a/git/gitglossary.pdf b/git/gitglossary.pdf new file mode 100644 index 0000000..a6d32ea Binary files /dev/null and b/git/gitglossary.pdf differ