Von Gast (nicht überprüft) , 29 April 2026

Vier Objekttypen

Git speichert alles als content-addressable Objekte unter .git/objects. Es gibt vier Typen: blob (Dateiinhalte), tree (Verzeichniseintrage von Blobs und Subtrees), commit (Snapshot-Zeiger mit Autor, Committer, Message und Eltern) und tag (annotierter Tag).

Inspektion

git cat-file -t <sha>
git cat-file -p <sha>
git cat-file -s <sha>
git ls-tree HEAD
git rev-parse HEAD^{tree}

Loose vs packed

Neu erstellte Objekte starten als loose: eine zlib-komprimierte Datei pro Objekt.

Hashing

echo "hello" | git hash-object --stdin
git hash-object -w README.md

Trees kodieren Berechtigungen

Modi: 040000 (Verzeichnis), 100644 (regular), 100755 (ausfuhrbar), 120000 (Symlink), 160000 (Gitlink/Submodul).

Historie durchwandern

git log --raw
git log --pretty=raw
git rev-list --objects HEAD

Erreichbarkeit und Pruning

git fsck --unreachable
git gc --prune=now

SHA-256-Ubergang

Modernes Git unterstutzt SHA-256-Repositories (git init --object-format=sha256).

Haufige Fehler

Dateien unter .git/objects direkt bearbeiten. Nicht tun.