git /

Git

Live map
Snapshotmaster · 745601a

How porcelain commands turn working-tree intent into immutable objects, movable refs, and negotiated packfiles.

Click a building or route
Choose a path

Read the staging area, write tree and commit objects, then atomically move the branch name.

System map8 components · 10 connections
130%
Git object city architectureUse Commit to learn local state first; Fetch adds the protocol exchange and remote-tracking update.argv + repository cont…pathspec + cache entri…directory hierarchy of…tree ID + parent IDs +…old object ID → new co…named tip object IDs +…PorcelainCommandIndexCommandDispatcherRemoteupload-packObjectDatabaseTransport &Fetch PackRefs & ReflogsRevisionWalker
Connections
BuildingsEntryServiceComputeStorageRuntimeToolingExternal

Terms, in plain English

PorcelainA user-facing Git command that composes lower-level plumbing operations into a workflow.

How to study this repo

  1. 1
    Inspect objects by hand

    Create a tiny repository and use git cat-file to inspect its blob, tree, and commit objects.

  2. 2
    Compare index and tree

    Trace write_index_as_tree to understand why staging is a complete proposed snapshot, not a patch list.

  3. 3
    Trace protocol v2

    Follow fetch-pack and upload-pack together, matching each want, have, acknowledgement, and pack response.