Merge in xdiff cleanup pieces
[git/mingw/4msysgit/kblees.git] / Documentation / glossary.txt
blob02a9d9c18acaf1e6091049aaf6d2fd1f2490e573
1 object::
2         The unit of storage in git. It is uniquely identified by
3         the SHA1 of its contents. Consequently, an object can not
4         be changed.
6 object name::
7         The unique identifier of an object. The hash of the object's contents
8         using the Secure Hash Algorithm 1 and usually represented by the 40
9         character hexadecimal encoding of the hash of the object (possibly
10         followed by a white space).
12 SHA1::
13         Synonym for object name.
15 object identifier::
16         Synonym for object name.
18 hash::
19         In git's context, synonym to object name.
21 object database::
22         Stores a set of "objects", and an individual object is identified
23         by its object name. The objects usually live in `$GIT_DIR/objects/`.
25 blob object::
26         Untyped object, e.g. the contents of a file.
28 tree object::
29         An object containing a list of file names and modes along with refs
30         to the associated blob and/or tree objects. A tree is equivalent
31         to a directory.
33 tree::
34         Either a working tree, or a tree object together with the
35         dependent blob and tree objects (i.e. a stored representation
36         of a working tree).
38 DAG::
39         Directed acyclic graph. The commit objects form a directed acyclic
40         graph, because they have parents (directed), and the graph of commit
41         objects is acyclic (there is no chain which begins and ends with the
42         same object).
44 index::
45         A collection of files with stat information, whose contents are
46         stored as objects. The index is a stored version of your working
47         tree. Truth be told, it can also contain a second, and even a third
48         version of a working tree, which are used when merging.
50 index entry::
51         The information regarding a particular file, stored in the index.
52         An index entry can be unmerged, if a merge was started, but not
53         yet finished (i.e. if the index contains multiple versions of
54         that file).
56 unmerged index:
57         An index which contains unmerged index entries.
59 cache::
60         Obsolete for: index.
62 working tree::
63         The set of files and directories currently being worked on,
64         i.e. you can work in your working tree without using git at all.
66 directory::
67         The list you get with "ls" :-)
69 revision::
70         A particular state of files and directories which was stored in
71         the object database. It is referenced by a commit object.
73 checkout::
74         The action of updating the working tree to a revision which was
75         stored in the object database.
77 commit::
78         As a verb: The action of storing the current state of the index in the
79         object database. The result is a revision.
80         As a noun: Short hand for commit object.
82 commit object::
83         An object which contains the information about a particular
84         revision, such as parents, committer, author, date and the
85         tree object which corresponds to the top directory of the
86         stored revision.
88 parent::
89         A commit object contains a (possibly empty) list of the logical
90         predecessor(s) in the line of development, i.e. its parents.
92 changeset::
93         BitKeeper/cvsps speak for "commit". Since git does not store
94         changes, but states, it really does not make sense to use
95         the term "changesets" with git.
97 clean::
98         A working tree is clean, if it corresponds to the revision
99         referenced by the current head.
101 dirty::
102         A working tree is said to be dirty if it contains modifications
103         which have not been committed to the current branch.
105 head::
106         The top of a branch. It contains a ref to the corresponding
107         commit object.
109 branch::
110         A non-cyclical graph of revisions, i.e. the complete history of
111         a particular revision, which is called the branch head. The
112         branch heads are stored in `$GIT_DIR/refs/heads/`.
114 master::
115         The default branch. Whenever you create a git repository, a branch
116         named "master" is created, and becomes the active branch. In most
117         cases, this contains the local development.
119 origin::
120         The default upstream branch. Most projects have one upstream
121         project which they track, and by default 'origin' is used for
122         that purpose.  New updates from upstream will be fetched into
123         this branch; you should never commit to it yourself.
125 ref::
126         A 40-byte hex representation of a SHA1 pointing to a particular
127         object. These may be stored in `$GIT_DIR/refs/`.
129 head ref::
130         A ref pointing to a head. Often, this is abbreviated to "head".
131         Head refs are stored in `$GIT_DIR/refs/heads/`.
133 tree-ish::
134         A ref pointing to either a commit object, a tree object, or a
135         tag object pointing to a tag or commit or tree object.
137 ent::
138         Favorite synonym to "tree-ish" by some total geeks. See
139         `http://en.wikipedia.org/wiki/Ent_(Middle-earth)` for an in-depth
140         explanation.
142 tag object::
143         An object containing a ref pointing to another object, which can
144         contain a message just like a commit object. It can also
145         contain a (PGP) signature, in which case it is called a "signed
146         tag object".
148 tag::
149         A ref pointing to a tag or commit object. In contrast to a head,
150         a tag is not changed by a commit. Tags (not tag objects) are
151         stored in `$GIT_DIR/refs/tags/`. A git tag has nothing to do with
152         a Lisp tag (which is called object type in git's context).
153         A tag is most typically used to mark a particular point in the
154         commit ancestry chain.
156 merge::
157         To merge branches means to try to accumulate the changes since a
158         common ancestor and apply them to the first branch. An automatic
159         merge uses heuristics to accomplish that. Evidently, an automatic
160         merge can fail.
162 octopus::
163         To merge more than two branches. Also denotes an intelligent
164         predator.
166 resolve::
167         The action of fixing up manually what a failed automatic merge
168         left behind.
170 rewind::
171         To throw away part of the development, i.e. to assign the head to
172         an earlier revision.
174 rebase::
175         To clean a branch by starting from the head of the main line of
176         development ("master"), and reapply the (possibly cherry-picked)
177         changes from that branch.
179 repository::
180         A collection of refs together with an object database containing
181         all objects, which are reachable from the refs, possibly accompanied
182         by meta data from one or more porcelains. A repository can
183         share an object database with other repositories.
185 git archive::
186         Synonym for repository (for arch people).
188 file system::
189         Linus Torvalds originally designed git to be a user space file
190         system, i.e. the infrastructure to hold files and directories.
191         That ensured the efficiency and speed of git.
193 alternate object database::
194         Via the alternates mechanism, a repository can inherit part of its
195         object database from another object database, which is called
196         "alternate".
198 reachable::
199         An object is reachable from a ref/commit/tree/tag, if there is a
200         chain leading from the latter to the former.
202 chain::
203         A list of objects, where each object in the list contains a
204         reference to its successor (for example, the successor of a commit
205         could be one of its parents).
207 fetch::
208         Fetching a branch means to get the branch's head ref from a
209         remote repository, to find out which objects are missing from
210         the local object database, and to get them, too.
212 pull::
213         Pulling a branch means to fetch it and merge it.
215 push::
216         Pushing a branch means to get the branch's head ref from a remote
217         repository, find out if it is an ancestor to the branch's local
218         head ref is a direct, and in that case, putting all objects, which
219         are reachable from the local head ref, and which are missing from
220         the remote repository, into the remote object database, and updating
221         the remote head ref. If the remote head is not an ancestor to the
222         local head, the push fails.
224 pack::
225         A set of objects which have been compressed into one file (to save
226         space or to transmit them efficiently).
228 pack index::
229         The list of identifiers, and other information, of the objects in a
230         pack, to assist in efficiently accessing the contents of a pack. 
232 core git::
233         Fundamental data structures and utilities of git. Exposes only
234         limited source code management tools.
236 plumbing::
237         Cute name for core git.
239 porcelain::
240         Cute name for programs and program suites depending on core git,
241         presenting a high level access to core git. Porcelains expose
242         more of a SCM interface than the plumbing.
244 object type:
245         One of the identifiers "commit","tree","tag" and "blob" describing
246         the type of an object.
248 SCM::
249         Source code management (tool).
251 dircache::
252         You are *waaaaay* behind.