1GITGLOSSARY(7) Git Manual GITGLOSSARY(7)
2
3
4
6 gitglossary - A GIT Glossary
7
9 *
10
12 alternate object database
13 Via the alternates mechanism, a repository can inherit part of its
14 object database from another object database, which is called
15 "alternate".
16
17 bare repository
18 A bare repository is normally an appropriately named directory with
19 a .git suffix that does not have a locally checked-out copy of any
20 of the files under revision control. That is, all of the git
21 administrative and control files that would normally be present in
22 the hidden .git sub-directory are directly present in the
23 repository.git directory instead, and no other files are present
24 and checked out. Usually publishers of public repositories make
25 bare repositories available.
26
27 blob object
28 Untyped object, e.g. the contents of a file.
29
30 branch
31 A "branch" is an active line of development. The most recent commit
32 on a branch is referred to as the tip of that branch. The tip of
33 the branch is referenced by a branch head, which moves forward as
34 additional development is done on the branch. A single git
35 repository can track an arbitrary number of branches, but your
36 working tree is associated with just one of them (the "current" or
37 "checked out" branch), and HEAD points to that branch.
38
39 cache
40 Obsolete for: index.
41
42 chain
43 A list of objects, where each object in the list contains a
44 reference to its successor (for example, the successor of a commit
45 could be one of its parents).
46
47 changeset
48 BitKeeper/cvsps speak for "commit". Since git does not store
49 changes, but states, it really does not make sense to use the term
50 "changesets" with git.
51
52 checkout
53 The action of updating all or part of the working tree with a tree
54 object or blob from the object database, and updating the index and
55 HEAD if the whole working tree has been pointed at a new branch.
56
57 cherry-picking
58 In SCM jargon, "cherry pick" means to choose a subset of changes
59 out of a series of changes (typically commits) and record them as a
60 new series of changes on top of a different codebase. In GIT, this
61 is performed by the "git cherry-pick" command to extract the change
62 introduced by an existing commit and to record it based on the tip
63 of the current branch as a new commit.
64
65 clean
66 A working tree is clean, if it corresponds to the revision
67 referenced by the current head. Also see "dirty".
68
69 commit
70 As a noun: A single point in the git history; the entire history of
71 a project is represented as a set of interrelated commits. The word
72 "commit" is often used by git in the same places other revision
73 control systems use the words "revision" or "version". Also used as
74 a short hand for commit object.
75
76 As a verb: The action of storing a new snapshot of the project’s
77 state in the git history, by creating a new commit representing the
78 current state of the index and advancing HEAD to point at the new
79 commit.
80
81 commit object
82 An object which contains the information about a particular
83 revision, such as parents, committer, author, date and the tree
84 object which corresponds to the top directory of the stored
85 revision.
86
87 core git
88 Fundamental data structures and utilities of git. Exposes only
89 limited source code management tools.
90
91 DAG
92 Directed acyclic graph. The commit objects form a directed acyclic
93 graph, because they have parents (directed), and the graph of
94 commit objects is acyclic (there is no chain which begins and ends
95 with the same object).
96
97 dangling object
98 An unreachable object which is not reachable even from other
99 unreachable objects; a dangling object has no references to it from
100 any reference or object in the repository.
101
102 detached HEAD
103 Normally the HEAD stores the name of a branch. However, git also
104 allows you to check out an arbitrary commit that isn’t necessarily
105 the tip of any particular branch. In this case HEAD is said to be
106 "detached".
107
108 dircache
109 You are waaaaay behind. See index.
110
111 directory
112 The list you get with "ls" :-)
113
114 dirty
115 A working tree is said to be "dirty" if it contains modifications
116 which have not been committed to the current branch.
117
118 ent
119 Favorite synonym to "tree-ish" by some total geeks. See
120 http://en.wikipedia.org/wiki/Ent_(Middle-earth) for an in-depth
121 explanation. Avoid this term, not to confuse people.
122
123 evil merge
124 An evil merge is a merge that introduces changes that do not appear
125 in any parent.
126
127 fast-forward
128 A fast-forward is a special type of merge where you have a revision
129 and you are "merging" another branch's changes that happen to be a
130 descendant of what you have. In such these cases, you do not make a
131 new merge commit but instead just update to his revision. This will
132 happen frequently on a remote-tracking branch of a remote
133 repository.
134
135 fetch
136 Fetching a branch means to get the branch’s head ref from a remote
137 repository, to find out which objects are missing from the local
138 object database, and to get them, too. See also git-fetch(1).
139
140 file system
141 Linus Torvalds originally designed git to be a user space file
142 system, i.e. the infrastructure to hold files and directories. That
143 ensured the efficiency and speed of git.
144
145 git archive
146 Synonym for repository (for arch people).
147
148 grafts
149 Grafts enables two otherwise different lines of development to be
150 joined together by recording fake ancestry information for commits.
151 This way you can make git pretend the set of parents a commit has
152 is different from what was recorded when the commit was created.
153 Configured via the .git/info/grafts file.
154
155 hash
156 In git’s context, synonym to object name.
157
158 head
159 A named reference to the commit at the tip of a branch. Heads are
160 stored in $GIT_DIR/refs/heads/, except when using packed refs. (See
161 git-pack-refs(1).)
162
163 HEAD
164 The current branch. In more detail: Your working tree is normally
165 derived from the state of the tree referred to by HEAD. HEAD is a
166 reference to one of the heads in your repository, except when using
167 a detached HEAD, in which case it may reference an arbitrary
168 commit.
169
170 head ref
171 A synonym for head.
172
173 hook
174 During the normal execution of several git commands, call-outs are
175 made to optional scripts that allow a developer to add
176 functionality or checking. Typically, the hooks allow for a command
177 to be pre-verified and potentially aborted, and allow for a
178 post-notification after the operation is done. The hook scripts are
179 found in the $GIT_DIR/hooks/ directory, and are enabled by simply
180 removing the .sample suffix from the filename. In earlier versions
181 of git you had to make them executable.
182
183 index
184 A collection of files with stat information, whose contents are
185 stored as objects. The index is a stored version of your working
186 tree. Truth be told, it can also contain a second, and even a third
187 version of a working tree, which are used when merging.
188
189 index entry
190 The information regarding a particular file, stored in the index.
191 An index entry can be unmerged, if a merge was started, but not yet
192 finished (i.e. if the index contains multiple versions of that
193 file).
194
195 master
196 The default development branch. Whenever you create a git
197 repository, a branch named "master" is created, and becomes the
198 active branch. In most cases, this contains the local development,
199 though that is purely by convention and is not required.
200
201 merge
202 As a verb: To bring the contents of another branch (possibly from
203 an external repository) into the current branch. In the case where
204 the merged-in branch is from a different repository, this is done
205 by first fetching the remote branch and then merging the result
206 into the current branch. This combination of fetch and merge
207 operations is called a pull. Merging is performed by an automatic
208 process that identifies changes made since the branches diverged,
209 and then applies all those changes together. In cases where changes
210 conflict, manual intervention may be required to complete the
211 merge.
212
213 As a noun: unless it is a fast-forward, a successful merge results
214 in the creation of a new commit representing the result of the
215 merge, and having as parents the tips of the merged branches. This
216 commit is referred to as a "merge commit", or sometimes just a
217 "merge".
218
219 object
220 The unit of storage in git. It is uniquely identified by the SHA1
221 of its contents. Consequently, an object can not be changed.
222
223 object database
224 Stores a set of "objects", and an individual object is identified
225 by its object name. The objects usually live in $GIT_DIR/objects/.
226
227 object identifier
228 Synonym for object name.
229
230 object name
231 The unique identifier of an object. The hash of the object’s
232 contents using the Secure Hash Algorithm 1 and usually represented
233 by the 40 character hexadecimal encoding of the hash of the object.
234
235 object type
236 One of the identifiers "commit", "tree", "tag" or "blob" describing
237 the type of an object.
238
239 octopus
240 To merge more than two branches. Also denotes an intelligent
241 predator.
242
243 origin
244 The default upstream repository. Most projects have at least one
245 upstream project which they track. By default origin is used for
246 that purpose. New upstream updates will be fetched into remote
247 remote-tracking branches named origin/name-of-upstream-branch,
248 which you can see using git branch -r.
249
250 pack
251 A set of objects which have been compressed into one file (to save
252 space or to transmit them efficiently).
253
254 pack index
255 The list of identifiers, and other information, of the objects in a
256 pack, to assist in efficiently accessing the contents of a pack.
257
258 parent
259 A commit object contains a (possibly empty) list of the logical
260 predecessor(s) in the line of development, i.e. its parents.
261
262 pickaxe
263 The term pickaxe refers to an option to the diffcore routines that
264 help select changes that add or delete a given text string. With
265 the --pickaxe-all option, it can be used to view the full changeset
266 that introduced or removed, say, a particular line of text. See
267 git-diff(1).
268
269 plumbing
270 Cute name for core git.
271
272 porcelain
273 Cute name for programs and program suites depending on core git,
274 presenting a high level access to core git. Porcelains expose more
275 of a SCM interface than the plumbing.
276
277 pull
278 Pulling a branch means to fetch it and merge it. See also git-
279 pull(1).
280
281 push
282 Pushing a branch means to get the branch’s head ref from a remote
283 repository, find out if it is a direct ancestor to the branch’s
284 local head ref, and in that case, putting all objects, which are
285 reachable from the local head ref, and which are missing from the
286 remote repository, into the remote object database, and updating
287 the remote head ref. If the remote head is not an ancestor to the
288 local head, the push fails.
289
290 reachable
291 All of the ancestors of a given commit are said to be "reachable"
292 from that commit. More generally, one object is reachable from
293 another if we can reach the one from the other by a chain that
294 follows tags to whatever they tag, commits to their parents or
295 trees, and trees to the trees or blobs that they contain.
296
297 rebase
298 To reapply a series of changes from a branch to a different base,
299 and reset the head of that branch to the result.
300
301 ref
302 A 40-byte hex representation of a SHA1 or a name that denotes a
303 particular object. These may be stored in $GIT_DIR/refs/.
304
305 reflog
306 A reflog shows the local "history" of a ref. In other words, it can
307 tell you what the 3rd last revision in this repository was, and
308 what was the current state in this repository, yesterday 9:14pm.
309 See git-reflog(1) for details.
310
311 refspec
312 A "refspec" is used by fetch and push to describe the mapping
313 between remote ref and local ref. They are combined with a colon in
314 the format <src>:<dst>, preceded by an optional plus sign, +. For
315 example: git fetch $URL refs/heads/master:refs/heads/origin means
316 "grab the master branch head from the $URL and store it as my
317 origin branch head". And git push $URL
318 refs/heads/master:refs/heads/to-upstream means "publish my master
319 branch head as to-upstream branch at $URL". See also git-push(1).
320
321 remote-tracking branch
322 A regular git branch that is used to follow changes from another
323 repository. A remote-tracking branch should not contain direct
324 modifications or have local commits made to it. A remote-tracking
325 branch can usually be identified as the right-hand-side ref in a
326 Pull: refspec.
327
328 repository
329 A collection of refs together with an object database containing
330 all objects which are reachable from the refs, possibly accompanied
331 by meta data from one or more porcelains. A repository can share an
332 object database with other repositories via alternates mechanism.
333
334 resolve
335 The action of fixing up manually what a failed automatic merge left
336 behind.
337
338 revision
339 A particular state of files and directories which was stored in the
340 object database. It is referenced by a commit object.
341
342 rewind
343 To throw away part of the development, i.e. to assign the head to
344 an earlier revision.
345
346 SCM
347 Source code management (tool).
348
349 SHA1
350 Synonym for object name.
351
352 shallow repository
353 A shallow repository has an incomplete history some of whose
354 commits have parents cauterized away (in other words, git is told
355 to pretend that these commits do not have the parents, even though
356 they are recorded in the commit object). This is sometimes useful
357 when you are interested only in the recent history of a project
358 even though the real history recorded in the upstream is much
359 larger. A shallow repository is created by giving the --depth
360 option to git-clone(1), and its history can be later deepened with
361 git-fetch(1).
362
363 symref
364 Symbolic reference: instead of containing the SHA1 id itself, it is
365 of the format ref: refs/some/thing and when referenced, it
366 recursively dereferences to this reference. HEAD is a prime
367 example of a symref. Symbolic references are manipulated with the
368 git-symbolic-ref(1) command.
369
370 tag
371 A ref pointing to a tag or commit object. In contrast to a head, a
372 tag is not changed by a commit. Tags (not tag objects) are stored
373 in $GIT_DIR/refs/tags/. A git tag has nothing to do with a Lisp tag
374 (which would be called an object type in git’s context). A tag is
375 most typically used to mark a particular point in the commit
376 ancestry chain.
377
378 tag object
379 An object containing a ref pointing to another object, which can
380 contain a message just like a commit object. It can also contain a
381 (PGP) signature, in which case it is called a "signed tag object".
382
383 topic branch
384 A regular git branch that is used by a developer to identify a
385 conceptual line of development. Since branches are very easy and
386 inexpensive, it is often desirable to have several small branches
387 that each contain very well defined concepts or small incremental
388 yet related changes.
389
390 tree
391 Either a working tree, or a tree object together with the dependent
392 blob and tree objects (i.e. a stored representation of a working
393 tree).
394
395 tree object
396 An object containing a list of file names and modes along with refs
397 to the associated blob and/or tree objects. A tree is equivalent to
398 a directory.
399
400 tree-ish
401 A ref pointing to either a commit object, a tree object, or a tag
402 object pointing to a tag or commit or tree object.
403
404 unmerged index
405 An index which contains unmerged index entries.
406
407 unreachable object
408 An object which is not reachable from a branch, tag, or any other
409 reference.
410
411 upstream branch
412 The default branch that is merged into the branch in question (or
413 the branch in question is rebased onto). It is configured via
414 branch.<name>.remote and branch.<name>.merge. If the upstream
415 branch of A is origin/B sometimes we say "A is tracking origin/B".
416
417 working tree
418 The tree of actual checked out files. The working tree normally
419 contains the contents of the HEAD commit’s tree, plus any local
420 changes that you have made but not yet committed.
421
423 gittutorial(7), gittutorial-2(7), gitcvs-migration(7), Everyday git[1],
424 The Git User’s Manual[2]
425
427 Part of the git(1) suite.
428
430 1. Everyday git
431 file:///usr/share/doc/git-1.7.4.4/everyday.html
432
433 2. The Git User’s Manual
434 file:///usr/share/doc/git-1.7.4.4/user-manual.html
435
436
437
438Git 1.7.4.4 04/11/2011 GITGLOSSARY(7)