{
    "content": "<h1>Exploring <a href=\"..\/git-internals\/\">git-internals<\/a><\/h1><p>At its core, <a href=\"..\/git\/\">git<\/a> is a <a href=\"..\/content-addressable-filesystem\/\">content-addressable-filesystem<\/a>. This means that at the heart of <a href=\"..\/git\/\">git<\/a> is a simple key-value data store. When you insert any kind of content into it, it returns a unique key that you can use to retrieve that content again later. This key is a <a href=\"..\/sha-1-hash\/\">sha-1-hash<\/a>.<\/p><h2>The <a href=\"..\/object-database\/\">object-database<\/a><\/h2><p>The <a href=\"..\/dot-git-directory\/\">dot-git-directory<\/a> contains a subdirectory called <code>objects<\/code>, which stores all the content for your <a href=\"..\/repository\/\">repository<\/a>. There are four main types of <a href=\"..\/git-objects\/\">git-objects<\/a>: <ul><li><a href=\"..\/blob\/\">blob<\/a>: Stores file data without the filename or metadata.<\/li><li><a href=\"..\/tree\/\">tree<\/a>: Stores filenames and groups <a href=\"..\/blob\/\">blob<\/a> objects together, effectively representing a directory structure.<\/li><li><a href=\"..\/commit\/\">commit<\/a>: Stores the metadata for a snapshot, including author, committer, and a pointer to the root <a href=\"..\/tree\/\">tree<\/a>.<\/li><li><a href=\"..\/tag\/\">tag<\/a>: A persistent pointer to a specific <a href=\"..\/commit\/\">commit<\/a>.<\/li><\/ul><\/p><h2>Plumbing vs Porcelain<\/h2><p>Users typically interact with <a href=\"..\/git\/\">git<\/a> via <a href=\"..\/porcelain-commands\/\">porcelain-commands<\/a> such as <code>git add<\/code> or <code>git commit<\/code>. However, the system is built on <a href=\"..\/plumbing-commands\/\">plumbing-commands<\/a> like <code>git hash-object<\/code> and <code>git cat-file<\/code>. These tools manipulate the <a href=\"..\/git-index\/\">git-index<\/a> and <a href=\"..\/git-references\/\">git-references<\/a> directly. For deeper technical insights, refer to the official <a href=\"https:\/\/git-scm.com\/book\/en\/v2\/Git-Internals-Git-Objects\">Git Documentation<\/a> or the <a href=\"https:\/\/github.com\/git\/git\/blob\/master\/Documentation\/technical\/index-format.txt\">Index Format Specification<\/a>.<\/p><ul><li><a href=\"..\/git-objects\/\">git-objects<\/a><\/li><li><a href=\"..\/sha-1\/\">sha-1<\/a><\/li><li><a href=\"..\/merkle-tree\/\">merkle-tree<\/a><\/li><li><a href=\"..\/directed-acyclic-graph\/\">directed-acyclic-graph<\/a><\/li><\/ul>",
    "tags": [
        "git",
        "git-internals",
        "vcs",
        "sha-1",
        "merkle-tree",
        "dag",
        "blob",
        "commit",
        "plumbing",
        "porcelain"
    ]
}