| gitformat-loose(5) |
| ================== |
| |
| NAME |
| ---- |
| gitformat-loose - Git loose object format |
| |
| |
| SYNOPSIS |
| -------- |
| [verse] |
| $GIT_DIR/objects/[0-9a-f][0-9a-f]/* |
| |
| DESCRIPTION |
| ----------- |
| |
| Loose objects are how Git stores individual objects, where every object is |
| written as a separate file. |
| |
| Over the lifetime of a repository, objects are usually written as loose objects |
| initially. Eventually, these loose objects will be compacted into packfiles |
| via repository maintenance to improve disk space usage and speed up the lookup |
| of these objects. |
| |
| == Loose objects |
| |
| Each loose object contains a prefix, followed immediately by the data of the |
| object. The prefix contains `<type> <size>\0`. `<type>` is one of `blob`, |
| `tree`, `commit`, or `tag` and `size` is the size of the data (without the |
| prefix) as a decimal integer expressed in ASCII. |
| |
| The entire contents, prefix and data concatenated, is then compressed with zlib |
| and the compressed data is stored in the file. The object ID of the object is |
| the SHA-1 or SHA-256 (as appropriate) hash of the uncompressed data. |
| |
| The file for the loose object is stored under the `objects` directory, with the |
| first two hex characters of the object ID being the directory and the remaining |
| characters being the file name. This is done to shard the data and avoid too |
| many files being in one directory, since some file systems perform poorly with |
| many items in a directory. |
| |
| As an example, the empty tree contains the data (when uncompressed) `tree 0\0` |
| and, in a SHA-256 repository, would have the object ID |
| `6ef19b41225c5369f1c104d45d8d85efa9b057b53b14b4b9b939dd74decc5321` and would be |
| stored under |
| `$GIT_DIR/objects/6e/f19b41225c5369f1c104d45d8d85efa9b057b53b14b4b9b939dd74decc5321`. |
| |
| Similarly, a blob containing the contents `abc` would have the uncompressed |
| data of `blob 3\0abc`. |
| |
| GIT |
| --- |
| Part of the linkgit:git[1] suite |