gitrepository-layout(5)
=======================

NAME
----
gitrepository-layout - Git Repository Layout

SYNOPSIS
--------
$GIT_DIR/*

DESCRIPTION
-----------

You may find these things in your git repository (`.git`
directory for a repository associated with your working tree, or
`<project>.git` directory for a public 'bare' repository. It is
also possible to have a working tree where `.git` is a plain
ASCII file containing `gitdir: <path>`, i.e. the path to the
real git repository).

objects::
	Object store associated with this repository.  Usually
	an object store is self sufficient (i.e. all the objects
	that are referred to by an object found in it are also
	found in it), but there are a few ways to violate it.
+
. You could have an incomplete but locally usable repository
by creating a shallow clone.  See linkgit:git-clone[1].
. You could be using the `objects/info/alternates` or
`$GIT_ALTERNATE_OBJECT_DIRECTORIES` mechanisms to 'borrow'
objects from other object stores.  A repository with this kind
of incomplete object store is not suitable to be published for
use with dumb transports but otherwise is OK as long as
`objects/info/alternates` points at the object stores it
borrows from.

objects/[0-9a-f][0-9a-f]::
	A newly created object is stored in its own file.
	The objects are splayed over 256 subdirectories using
	the first two characters of the sha1 object name to
	keep the number of directory entries in `objects`
	itself to a manageable number. Objects found
	here are often called 'unpacked' (or 'loose') objects.

objects/pack::
	Packs (files that store many object in compressed form,
	along with index files to allow them to be randomly
	accessed) are found in this directory.

objects/info::
	Additional information about the object store is
	recorded in this directory.

objects/info/packs::
	This file is to help dumb transports discover what packs
	are available in this object store.  Whenever a pack is
	added or removed, `git update-server-info` should be run
	to keep this file up-to-date if the repository is
	published for dumb transports.  'git repack' does this
	by default.

objects/info/alternates::
	This file records paths to alternate object stores that
	this object store borrows objects from, one pathname per
	line. Note that not only native Git tools use it locally,
	but the HTTP fetcher also tries to use it remotely; this
	will usually work if you have relative paths (relative
	to the object database, not to the repository!) in your
	alternates file, but it will not work if you use absolute
	paths unless the absolute path in filesystem and web URL
	is the same. See also 'objects/info/http-alternates'.

objects/info/http-alternates::
	This file records URLs to alternate object stores that
	this object store borrows objects from, to be used when
	the repository is fetched over HTTP.

refs::
	References are stored in subdirectories of this
	directory.  The 'git prune' command knows to preserve
	objects reachable from refs found in this directory and
	its subdirectories.

refs/heads/`name`::
	records tip-of-the-tree commit objects of branch `name`

refs/tags/`name`::
	records any object name (not necessarily a commit
	object, or a tag object that points at a commit object).

refs/remotes/`name`::
	records tip-of-the-tree commit objects of branches copied
	from a remote repository.

refs/replace/`<obj-sha1>`::
	records the SHA1 of the object that replaces `<obj-sha1>`.
	This is similar to info/grafts and is internally used and
	maintained by linkgit:git-replace[1]. Such refs can be exchanged
	between repositories while grafts are not.

packed-refs::
	records the same information as refs/heads/, refs/tags/,
	and friends record in a more efficient way.  See
	linkgit:git-pack-refs[1].

HEAD::
	A symref (see glossary) to the `refs/heads/` namespace
	describing the currently active branch.  It does not mean
	much if the repository is not associated with any working tree
	(i.e. a 'bare' repository), but a valid git repository
	*must* have the HEAD file; some porcelains may use it to
	guess the designated "default" branch of the repository
	(usually 'master').  It is legal if the named branch
	'name' does not (yet) exist.  In some legacy setups, it is
	a symbolic link instead of a symref that points at the current
	branch.
+
HEAD can also record a specific commit directly, instead of
being a symref to point at the current branch.  Such a state
is often called 'detached HEAD.'  See linkgit:git-checkout[1]
for details.

branches::
	A slightly deprecated way to store shorthands to be used
	to specify a URL to 'git fetch', 'git pull' and 'git push'.
	A file can be stored as `branches/<name>` and then
	'name' can be given to these commands in place of
	'repository' argument.  See the REMOTES section in
	linkgit:git-fetch[1] for details.  This mechanism is legacy
	and not likely to be found in modern repositories.

hooks::
	Hooks are customization scripts used by various git
	commands.  A handful of sample hooks are installed when
	'git init' is run, but all of them are disabled by
	default.  To enable, the `.sample` suffix has to be
	removed from the filename by renaming.
	Read linkgit:githooks[5] for more details about
	each hook.

index::
	The current index file for the repository.  It is
	usually not found in a bare repository.

info::
	Additional information about the repository is recorded
	in this directory.

info/refs::
	This file helps dumb transports discover what refs are
	available in this repository.  If the repository is
	published for dumb transports, this file should be
	regenerated by 'git update-server-info' every time a tag
	or branch is created or modified.  This is normally done
	from the `hooks/update` hook, which is run by the
	'git-receive-pack' command when you 'git push' into the
	repository.

info/grafts::
	This file records fake commit ancestry information, to
	pretend the set of parents a commit has is different
	from how the commit was actually created.  One record
	per line describes a commit and its fake parents by
	listing their 40-byte hexadecimal object names separated
	by a space and terminated by a newline.

info/exclude::
	This file, by convention among Porcelains, stores the
	exclude pattern list. `.gitignore` is the per-directory
	ignore file.  'git status', 'git add', 'git rm' and
	'git clean' look at it but the core git commands do not look
	at it.  See also: linkgit:gitignore[5].

remotes::
	Stores shorthands for URL and default refnames for use
	when interacting with remote repositories via 'git fetch',
	'git pull' and 'git push' commands.  See the REMOTES section
	in linkgit:git-fetch[1] for details.  This mechanism is legacy
	and not likely to be found in modern repositories.

logs::
	Records of changes made to refs are stored in this
	directory.  See linkgit:git-update-ref[1]
	for more information.

logs/refs/heads/`name`::
	Records all changes made to the branch tip named `name`.

logs/refs/tags/`name`::
	Records all changes made to the tag named `name`.

shallow::
	This is similar to `info/grafts` but is internally used
	and maintained by shallow clone mechanism.  See `--depth`
	option to linkgit:git-clone[1] and linkgit:git-fetch[1].

SEE ALSO
--------
linkgit:git-init[1],
linkgit:git-clone[1],
linkgit:git-fetch[1],
linkgit:git-pack-refs[1],
linkgit:git-gc[1],
linkgit:git-checkout[1],
linkgit:gitglossary[7],
link:user-manual.html[The Git User's Manual]

GIT
---
Part of the linkgit:git[1] suite.
