- Configuration
- Parsing
- Includes
- Writing
- Object IDs
- SHA‐256
- SHA‐1
- Object model (incl., parse, serialize)
- Blobs
- Trees
- File mode definitions
- Entry insertion ordering
- Traversal
- Pathspec
- Commits
- Annotated tags
- Stored objects
- Signed objects
- Signed object payload/signature extraction
- Signature verification
- Reading object stores
- Pluggable interface
- Chain lookup store
- Mix lookup store
- Reading loose objects
- Reading from bundles
- Promisor remotes
- Alternates
- Reading packed objects
- Pack index lookups
- Delta caching
- Delta application
- Pack‐wide bloom filters
- Multi pack indexes
- Writing objects
- Loose object writing
- Misc bundle features
- Writing bundles
- Misc packfile features
- Writing pack indexes
- Writing reverse pack indexes
- Writing packfiles
- Writing thin packs
- Compressing deltas
- Delta islands
- Pack verification
- Compression
- Plugabble compression algorithms
- ZLIB support
- DEFLATE optimizations
- Adler‐32 SIMD optimizations
- References
- Detached references
- Symbolic references
- Name verification/resolution
- Annotated tag ref peeling
- Describe
- Revision syntax
- Namespaces
- Replace refs, grafts
- Reference stores
- Chain lookup store
- Files reference store
- Reading loose refs
- Reading packed refs
- Atomic writes
- Batched writes
- Packing refs
- Reflogs
- Reftable
- Reachability
- Have/wants walks
- Is ancestor
- Merge bases
- Commit graph
- Changed path bloom filters
- Chained graphs
- Writing
- Reachability bitmaps
- For a single packfile
- For Multi pack indexes
- Misc repository
- Opening relevant stores
- Creating repositories
- Filter branch/repo
- Fast import/export
- Git notes
- Git attributes
- Full pseudoref support
- Integrity and maintenance
- Fsck
- Repacking
- Garbage collection
- Cruft packing
- Expiration
- Grep
- Submodules
- Worktrees
- Archive
- LFS
- Revision log walk
- Topological ordering
- Date ordering
- Path‐limited
- Diffing
- Blame
- Annotate
- Tree diffing
- Similarity/rename/copy detection
- Multi‐way diffs
- Patch‐id
- Range‐diff
- Blob diffing
- Word diffs
- Myers
- Patience
- Histogram
- Three‐way
- Format patch
- Apply/amend patch
- Branch integration/rewrite/etc methods
- Merge
- Recursive
- ORT
- Rebase
- Cherry pick
- Revert
- Rerere
- Merge
- Network protocols and related features
- pkt-line
- side-band-64k
- Ingesting packfiles
- Quarantine areas
- Un‐thinning thin packs
- Version 0, version 1 protocols
- Server side
- Reference advertisement
- Capability negotiation
- Receive
- "Upload"
- Client side
- Send
- Fetch
- Server side
- Version 2 protocol
- Server side
- "Upload"
- Client side
- Fetch
- Server side
- Protocol‐independent logic
- Common
- Progress meters
- Client side
- Refspec
- Fetch
- Partial clones
- Object filtering
- Bundle URI
- Packfile URI
- Shallow clones
- Partial clones
- Send
- Server side
- Upload
- Object filtering
- Receive
- Signed push
- Hooks
- Slots
- After ref negotiation
- After object unpacking
- Provided samples
- Chain
- Force push rejection
- Slots
- Upload
- Common
- Working trees
- Stashing
- Ignore rules
- Checkouts
- Sparse checkouts
- CR/LF conversions
- File mode conversions
- Indexes
- Conflict resolution
- Split index
- Sparse index
- Untracked cache
- Status listing
- Filesystem monitor
- Worktree
- Common directory
- Worktree‐specific references
- Worktree‐specific reference name validation
- Research
- Dynamic packfiles
- Compaction; page‐sized hole punching
- Dynamic indexing
- Linear/extendible/spiral hashing
- Dynamic reachability bitmaps
- Dynamic packfiles
- CLI tools
- Clone
- Anything reasonably considered "porcelain"
- Credential helper
- Transports
- Auth
- Remote management
- Bisect
- Any use of env vars
- Repository discovery walking