bk99.de entertain the web since 1997

Git als Graph aus unveränderlichen Objekten verstehen

Zusammenfassung

Charles Duan erklärt Blobs, Bäume, Commits und Referenzen als zusammenhängendes Datenmodell hinter Gits alltäglichen Befehlen.

Ideen

  • Blobs speichern Dateiinhalte ohne Pfadnamen.
  • Bäume verbinden Namen mit Blobs und weiteren Bäumen.
  • Commits verweisen auf einen Baum und vorherige Commits.
  • Referenzen geben unveränderlichen Commitobjekten bewegliche Namen.
  • Der Index bereitet den Baum des nächsten Commits vor.
  • Merge-Commits verbinden mehrere Eltern in einem gemeinsamen Graphen.

Einsichten

  • Befehle werden vorhersehbar, wenn ihre Objektänderungen sichtbar sind.
  • Inhaltsadressierung macht identische Daten automatisch gemeinsam nutzbar.
  • Historie ist ein Graph und keine zwingend lineare Zeitleiste.
  • Bewegliche Referenzen schaffen Bedienkomfort über unveränderlichen Zuständen.

Fakten

  • Git verwendet vier zentrale Objekttypen.
  • Objektnamen entstehen aus kryptografischen Hashwerten.
  • Ein Commit enthält keinen vollständigen Branch-Namen.
  • Tags können feste Namen für bestimmte Objekte bereitstellen.

Empfehlungen

  • Untersuche ein Testrepository mit git cat-file und git ls-tree.
  • Prüfe vor riskanten Operationen Referenzen und Reflog.
  • Denke bei Mergeproblemen in gemeinsamen Vorfahren und Graphkanten.

Referenzen

Originalartikel lesen →