bk99.de entertain the web since 1997

Gits Staging Area entwirrt gemischte Änderungen

Zusammenfassung

Ryan Tomayko zeigt, wie Gits Index einzelne Dateibereiche zu sauberen Commits bündelt, obwohl die Arbeitskopie mehrere Änderungen enthält.

Ideen

  • Arbeitskopie, Staging Area und Repository bilden drei getrennte Zustände.
  • git add --patch übernimmt ausgewählte Änderungen innerhalb einer Datei.
  • Ein Commit muss nicht den gesamten aktuellen Arbeitsstand enthalten.
  • git diff --cached prüft den vorbereiteten nächsten Commit.
  • Interaktives Rebase ordnet, verbindet und bearbeitet lokale Commits nachträglich.
  • Topic-Branches isolieren unfertige Arbeit ohne starre Vorausplanung.

Einsichten

  • Werkzeuge sollten heutige Unordnung reparieren können statt gestrige Planung zu verlangen.
  • Saubere Historie und flüssiges Experimentieren schließen sich nicht aus.
  • Ein zusätzlicher Zwischenzustand schafft Kontrolle, obwohl er anfangs komplexer wirkt.
  • Commits dokumentieren gedankliche Einheiten und nicht bloß Speicherzeitpunkte.

Fakten

  • Git nennt den Index auch Staging Area.
  • Patches lassen sich hunkweise auswählen.
  • Nicht vorgemerkte Änderungen bleiben nach einem Commit erhalten.
  • git commit --amend verändert den zuletzt erstellten Commit.

Empfehlungen

  • Prüfe vor jedem Commit den vorgemerkten Diff.
  • Trenne fachlich unabhängige Änderungen auch innerhalb derselben Datei.
  • Bearbeite nur unveröffentlichte Historie nachträglich.

Referenzen

Originalartikel lesen →