Documentation: clarify definition of "reachable"
[git/jnareb-git.git] / Documentation / glossary.txt
blobcd61aa26065ba6f3d06df7d1c00e2e81d42bce9e
1 alternate object database::
2         Via the alternates mechanism, a repository can inherit part of its
3         object database from another object database, which is called
4         "alternate".
6 bare repository::
7         A bare repository is normally an appropriately named
8         directory with a `.git` suffix that does not have a
9         locally checked-out copy of any of the files under revision
10         control.  That is, all of the `git` administrative and
11         control files that would normally be present in the
12         hidden `.git` sub-directory are directly present in
13         the `repository.git` directory instead, and no other files
14         are present and checked out.  Usually publishers of public
15         repositories make bare repositories available.
17 blob object::
18         Untyped object, e.g. the contents of a file.
20 branch::
21         A non-cyclical graph of revisions, i.e. the complete history of
22         a particular revision, which is called the branch head. The
23         branch heads are stored in `$GIT_DIR/refs/heads/`.
25 cache::
26         Obsolete for: index.
28 chain::
29         A list of objects, where each object in the list contains a
30         reference to its successor (for example, the successor of a commit
31         could be one of its parents).
33 changeset::
34         BitKeeper/cvsps speak for "commit". Since git does not store
35         changes, but states, it really does not make sense to use
36         the term "changesets" with git.
38 checkout::
39         The action of updating the working tree to a revision which was
40         stored in the object database.
42 cherry-picking::
43         In SCM jargon, "cherry pick" means to choose a subset of
44         changes out of a series of changes (typically commits)
45         and record them as a new series of changes on top of
46         different codebase.  In GIT, this is performed by
47         "git cherry-pick" command to extract the change
48         introduced by an existing commit and to record it based
49         on the tip of the current branch as a new commit.
51 clean::
52         A working tree is clean, if it corresponds to the revision
53         referenced by the current head.  Also see "dirty".
55 commit::
56         As a verb: The action of storing the current state of the index in the
57         object database. The result is a revision.
58         As a noun: Short hand for commit object.
60 commit object::
61         An object which contains the information about a particular
62         revision, such as parents, committer, author, date and the
63         tree object which corresponds to the top directory of the
64         stored revision.
66 core git::
67         Fundamental data structures and utilities of git. Exposes only
68         limited source code management tools.
70 DAG::
71         Directed acyclic graph. The commit objects form a directed acyclic
72         graph, because they have parents (directed), and the graph of commit
73         objects is acyclic (there is no chain which begins and ends with the
74         same object).
76 dircache::
77         You are *waaaaay* behind.
79 dirty::
80         A working tree is said to be dirty if it contains modifications
81         which have not been committed to the current branch.
83 directory::
84         The list you get with "ls" :-)
86 ent::
87         Favorite synonym to "tree-ish" by some total geeks. See
88         `http://en.wikipedia.org/wiki/Ent_(Middle-earth)` for an in-depth
89         explanation.  Avoid this term, not to confuse people.
91 fast forward::
92         A fast-forward is a special type of merge where you have
93         a revision and you are "merging" another branch's changes
94         that happen to be a descendant of what you have.
95         In such these cases, you do not make a new merge commit but
96         instead just update to his revision. This will happen
97         frequently on a tracking branch of a remote repository.
99 fetch::
100         Fetching a branch means to get the branch's head ref from a
101         remote repository, to find out which objects are missing from
102         the local object database, and to get them, too.
104 file system::
105         Linus Torvalds originally designed git to be a user space file
106         system, i.e. the infrastructure to hold files and directories.
107         That ensured the efficiency and speed of git.
109 git archive::
110         Synonym for repository (for arch people).
112 grafts::
113         Grafts enables two otherwise different lines of development to be
114         joined together by recording fake ancestry information for commits.
115         This way you can make git pretend the set of parents a commit
116         has is different from what was recorded when the commit was created.
117         Configured via the `.git/info/grafts` file.
119 hash::
120         In git's context, synonym to object name.
122 head::
123         The top of a branch. It contains a ref to the corresponding
124         commit object.
126 head ref::
127         A ref pointing to a head. Often, this is abbreviated to "head".
128         Head refs are stored in `$GIT_DIR/refs/heads/`.
130 hook::
131         During the normal execution of several git commands,
132         call-outs are made to optional scripts that allow
133         a developer to add functionality or checking.
134         Typically, the hooks allow for a command to be pre-verified
135         and potentially aborted, and allow for a post-notification
136         after the operation is done.
137         The hook scripts are found in the `$GIT_DIR/hooks/` directory,
138         and are enabled by simply making them executable.
140 index::
141         A collection of files with stat information, whose contents are
142         stored as objects. The index is a stored version of your working
143         tree. Truth be told, it can also contain a second, and even a third
144         version of a working tree, which are used when merging.
146 index entry::
147         The information regarding a particular file, stored in the index.
148         An index entry can be unmerged, if a merge was started, but not
149         yet finished (i.e. if the index contains multiple versions of
150         that file).
152 master::
153         The default development branch. Whenever you create a git
154         repository, a branch named "master" is created, and becomes
155         the active branch. In most cases, this contains the local
156         development, though that is purely conventional and not required.
158 merge::
159         To merge branches means to try to accumulate the changes since a
160         common ancestor and apply them to the first branch. An automatic
161         merge uses heuristics to accomplish that. Evidently, an automatic
162         merge can fail.
164 object::
165         The unit of storage in git. It is uniquely identified by
166         the SHA1 of its contents. Consequently, an object can not
167         be changed.
169 object database::
170         Stores a set of "objects", and an individual object is identified
171         by its object name. The objects usually live in `$GIT_DIR/objects/`.
173 object identifier::
174         Synonym for object name.
176 object name::
177         The unique identifier of an object. The hash of the object's contents
178         using the Secure Hash Algorithm 1 and usually represented by the 40
179         character hexadecimal encoding of the hash of the object (possibly
180         followed by a white space).
182 object type::
183         One of the identifiers "commit","tree","tag" and "blob" describing
184         the type of an object.
186 octopus::
187         To merge more than two branches. Also denotes an intelligent
188         predator.
190 origin::
191         The default upstream repository. Most projects have at
192         least one upstream project which they track. By default
193         'origin' is used for that purpose.  New upstream updates
194         will be fetched into remote tracking branches named
195         origin/name-of-upstream-branch, which you can see using
196         "git branch -r".
198 pack::
199         A set of objects which have been compressed into one file (to save
200         space or to transmit them efficiently).
202 pack index::
203         The list of identifiers, and other information, of the objects in a
204         pack, to assist in efficiently accessing the contents of a pack.
206 parent::
207         A commit object contains a (possibly empty) list of the logical
208         predecessor(s) in the line of development, i.e. its parents.
210 pickaxe::
211         The term pickaxe refers to an option to the diffcore routines
212         that help select changes that add or delete a given text string.
213         With the --pickaxe-all option, it can be used to view the
214         full changeset that introduced or removed, say, a particular
215         line of text.  See gitlink:git-diff[1].
217 plumbing::
218         Cute name for core git.
220 porcelain::
221         Cute name for programs and program suites depending on core git,
222         presenting a high level access to core git. Porcelains expose
223         more of a SCM interface than the plumbing.
225 pull::
226         Pulling a branch means to fetch it and merge it.
228 push::
229         Pushing a branch means to get the branch's head ref from a remote
230         repository, find out if it is an ancestor to the branch's local
231         head ref is a direct, and in that case, putting all objects, which
232         are reachable from the local head ref, and which are missing from
233         the remote repository, into the remote object database, and updating
234         the remote head ref. If the remote head is not an ancestor to the
235         local head, the push fails.
237 reachable::
238         All of the ancestors of a given commit are said to be reachable from
239         that commit.  More generally, one object is reachable from another if
240         we can reach the one from the other by a chain that follows tags to
241         whatever they tag, commits to their parents or trees, and trees to the
242         trees or blobs that they contain.
244 rebase::
245         To clean a branch by starting from the head of the main line of
246         development ("master"), and reapply the (possibly cherry-picked)
247         changes from that branch.
249 ref::
250         A 40-byte hex representation of a SHA1 or a name that denotes
251         a particular object. These may be stored in `$GIT_DIR/refs/`.
253 refspec::
254         A refspec is used by fetch and push to describe the mapping
255         between remote ref and local ref.  They are combined with
256         a colon in the format <src>:<dst>, preceded by an optional
257         plus sign, +.  For example:
258         `git fetch $URL refs/heads/master:refs/heads/origin`
259         means "grab the master branch head from the $URL and store
260         it as my origin branch head".
261         And `git push $URL refs/heads/master:refs/heads/to-upstream`
262         means "publish my master branch head as to-upstream master head
263         at $URL".   See also gitlink:git-push[1]
265 repository::
266         A collection of refs together with an object database containing
267         all objects, which are reachable from the refs, possibly accompanied
268         by meta data from one or more porcelains. A repository can
269         share an object database with other repositories.
271 resolve::
272         The action of fixing up manually what a failed automatic merge
273         left behind.
275 revision::
276         A particular state of files and directories which was stored in
277         the object database. It is referenced by a commit object.
279 rewind::
280         To throw away part of the development, i.e. to assign the head to
281         an earlier revision.
283 SCM::
284         Source code management (tool).
286 SHA1::
287         Synonym for object name.
289 symref::
290         Symbolic reference: instead of containing the SHA1 id itself, it
291         is of the format 'ref: refs/some/thing' and when referenced, it
292         recursively dereferences to this reference. 'HEAD' is a prime
293         example of a symref. Symbolic references are manipulated with
294         the gitlink:git-symbolic-ref[1] command.
296 topic branch::
297         A regular git branch that is used by a developer to
298         identify a conceptual line of development.  Since branches
299         are very easy and inexpensive, it is often desirable to
300         have several small branches that each contain very well
301         defined concepts or small incremental yet related changes.
303 tracking branch::
304         A regular git branch that is used to follow changes from
305         another repository.  A tracking branch should not contain
306         direct modifications or have local commits made to it.
307         A tracking branch can usually be identified as the
308         right-hand-side ref in a Pull: refspec.
310 tree object::
311         An object containing a list of file names and modes along with refs
312         to the associated blob and/or tree objects. A tree is equivalent
313         to a directory.
315 tree::
316         Either a working tree, or a tree object together with the
317         dependent blob and tree objects (i.e. a stored representation
318         of a working tree).
320 tree-ish::
321         A ref pointing to either a commit object, a tree object, or a
322         tag object pointing to a tag or commit or tree object.
324 tag object::
325         An object containing a ref pointing to another object, which can
326         contain a message just like a commit object. It can also
327         contain a (PGP) signature, in which case it is called a "signed
328         tag object".
330 tag::
331         A ref pointing to a tag or commit object. In contrast to a head,
332         a tag is not changed by a commit. Tags (not tag objects) are
333         stored in `$GIT_DIR/refs/tags/`. A git tag has nothing to do with
334         a Lisp tag (which is called object type in git's context).
335         A tag is most typically used to mark a particular point in the
336         commit ancestry chain.
338 unmerged index::
339         An index which contains unmerged index entries.
341 working tree::
342         The set of files and directories currently being worked on,
343         i.e. you can work in your working tree without using git at all.