object database from another object database, which is called
"alternate".
+bare repository::
+ A bare repository is normally an appropriately named
+ directory with a `.git` 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 `.git` sub-directory are directly present in
+ the `repository.git` directory instead, and no other files
+ are present and checked out. Usually publishers of public
+ repositories make bare repositories available.
+
blob object::
Untyped object, e.g. the contents of a file.
The action of updating the working tree to a revision which was
stored in the object database.
+cherry-picking::
+ 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
+ different codebase. In GIT, this is performed by
+ "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.
+
clean::
A working tree is clean, if it corresponds to the revision
referenced by the current head. Also see "dirty".
ent::
Favorite synonym to "tree-ish" by some total geeks. See
`http://en.wikipedia.org/wiki/Ent_(Middle-earth)` for an in-depth
- explanation.
+ explanation. Avoid this term, not to confuse people.
+
+fast forward::
+ A fast-forward is a special type of merge where you have
+ a revision and you are "merging" another branch's changes
+ that happen to be a descendant of what you have.
+ In such these cases, you do not make a new merge commit but
+ instead just update to his revision. This will happen
+ frequently on a tracking branch of a remote repository.
fetch::
Fetching a branch means to get the branch's head ref from a
git archive::
Synonym for repository (for arch people).
+grafts::
+ 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 `.git/info/grafts` file.
+
hash::
In git's context, synonym to object name.
A ref pointing to a head. Often, this is abbreviated to "head".
Head refs are stored in `$GIT_DIR/refs/heads/`.
+hook::
+ 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 `$GIT_DIR/hooks/` directory,
+ and are enabled by simply making them executable.
+
index::
A collection of files with stat information, whose contents are
stored as objects. The index is a stored version of your working
that file).
master::
- The default 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.
-
+ 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 conventional and not required.
merge::
To merge branches means to try to accumulate the changes since a
character hexadecimal encoding of the hash of the object (possibly
followed by a white space).
-object type:
+object type::
One of the identifiers "commit","tree","tag" and "blob" describing
the type of an object.
predator.
origin::
- The default upstream branch. Most projects have one upstream
- project which they track, and by default 'origin' is used for
- that purpose. New updates from upstream will be fetched into
- this branch; you should never commit to it yourself.
+ The default upstream repository. Most projects have at
+ least one upstream project which they track. By default
+ 'origin' 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
+ "git branch -r".
pack::
A set of objects which have been compressed into one file (to save
A commit object contains a (possibly empty) list of the logical
predecessor(s) in the line of development, i.e. its parents.
+pickaxe::
+ 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 --pickaxe-all option, it can be used to view the
+ full changeset that introduced or removed, say, a particular
+ line of text. See gitlink:git-diff[1].
+
plumbing::
Cute name for core git.
local head, the push fails.
reachable::
- An object is reachable from a ref/commit/tree/tag, if there is a
- chain leading from the latter to the former.
+ 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.
rebase::
To clean a branch by starting from the head of the main line of
changes from that branch.
ref::
- A 40-byte hex representation of a SHA1 pointing to a particular
- object. These may be stored in `$GIT_DIR/refs/`.
+ A 40-byte hex representation of a SHA1 or a name that denotes
+ a particular object. These may be stored in `$GIT_DIR/refs/`.
+
+refspec::
+ A refspec is used by fetch and push to describe the mapping
+ between remote ref and local ref. They are combined with
+ a colon in the format <src>:<dst>, preceded by an optional
+ plus sign, +. For example:
+ `git fetch $URL refs/heads/master:refs/heads/origin`
+ means "grab the master branch head from the $URL and store
+ it as my origin branch head".
+ And `git push $URL refs/heads/master:refs/heads/to-upstream`
+ means "publish my master branch head as to-upstream branch
+ at $URL". See also gitlink:git-push[1]
repository::
A collection of refs together with an object database containing
SHA1::
Synonym for object name.
+shallow repository::
+ 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
+ `--depth` option to gitlink:git-clone[1], and its
+ history can be later deepened with gitlink:git-fetch[1].
+
+symref::
+ Symbolic reference: instead of containing the SHA1 id itself, it
+ is of the format 'ref: refs/some/thing' and when referenced, it
+ recursively dereferences to this reference. 'HEAD' is a prime
+ example of a symref. Symbolic references are manipulated with
+ the gitlink:git-symbolic-ref[1] command.
+
+topic branch::
+ 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.
+
+tracking branch::
+ A regular git branch that is used to follow changes from
+ another repository. A tracking branch should not contain
+ direct modifications or have local commits made to it.
+ A tracking branch can usually be identified as the
+ right-hand-side ref in a Pull: refspec.
+
tree object::
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
A tag is most typically used to mark a particular point in the
commit ancestry chain.
-unmerged index:
+unmerged index::
An index which contains unmerged index entries.
working tree::