trees this way, for example. A repository with this kind of
incomplete object store is not suitable to be published to the
outside world but sometimes useful for private repository.
+. You also could have an incomplete but locally usable repository
+by cloning shallowly. See gitlink:git-clone[1].
. You can be using `objects/info/alternates` mechanism, or
`$GIT_ALTERNATE_OBJECT_DIRECTORIES` mechanism to 'borrow'
objects from other object stores. A repository with this kind
two letters from its object name to keep the number of
directory entries `objects` directory itself needs to
hold. Objects found here are often called 'unpacked'
- objects.
+ (or 'loose') objects.
objects/pack::
Packs (files that store many object in compressed form,
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.
+
+packed-refs::
+ records the same information as refs/heads/, refs/tags/,
+ and friends record in a more efficient way. See
+ gitlink:git-pack-refs[1].
+
HEAD::
A symref (see glossary) to the `refs/heads/` namespace
describing the currently active branch. It does not mean
'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', and almost all commands work
+identically as normal. See gitlink:git-checkout[1] for
+details.
branches::
A slightly deprecated way to store shorthands to be used
in this directory.
info/refs::
- This file is to help dumb transports to discover what
- refs are available in this repository. Whenever you
- create/delete a new branch or a new tag, `git
- update-server-info` should be run to keep this file
- up-to-date if the repository is published for dumb
- transports. The `git-receive-pack` command, which is
- run on a remote repository when you `git push` into it,
- runs `hooks/update` hook to help you achieve this.
+ 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
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: gitlink:git-ls-files[1] `--exclude-from`
- and `--exclude-per-directory`.
+ at it. See also: gitlink:gitignore[5].
remotes::
Stores shorthands to be used to give URL and default
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 gitlink:git-clone[1] and gitlink:git-fetch[1].