Zum Inhalt springen

Was Git löst

Jeder kennt Ordner wie diesen:

bericht.docx
bericht_v2.docx
bericht_v2_final.docx
bericht_v2_final_korrigiert.docx
bericht_FINAL_wirklich.docx

Welche Version ist aktuell? Was wurde zwischen v2 und final geändert? Wer hat es geändert? Und wenn zwei Personen gleichzeitig arbeiten: Wie führt man das zusammen?

Git beantwortet alle diese Fragen. Es speichert nicht Kopien von Dateien, sondern eine Geschichte von Änderungen: Wer hat wann was geändert und warum. Jeder Stand ist jederzeit wiederherstellbar.

Begriff Bedeutung
Repository (Repo) Ein Projektordner, den Git überwacht. Die ganze Geschichte liegt im Unterordner .git.
Commit Ein gespeicherter Stand mit Beschreibung, Autor und Zeitstempel. Ein Schnappschuss des ganzen Projekts.
Working Directory Die Dateien, wie du sie gerade siehst und bearbeitest.
Staging Area (Index) Der Wartebereich: Was hier liegt, kommt in den nächsten Commit.
Branch Eine Entwicklungslinie. main ist die Hauptlinie, für jede Aufgabe gibt es einen eigenen Branch.
Remote Die Kopie des Repos auf einem Server, hier GitLab. Heisst standardmässig origin.
Clone Eine vollständige Kopie eines Remote-Repos auf deinem Rechner.
Push / Pull Commits zum Server hochladen beziehungsweise vom Server holen.
Merge Request Die Bitte, einen Branch in main zu übernehmen. Mit Review, Kommentaren und automatischen Checks.

Drei Bereiche auf deinem Rechner, einer auf dem Server:

flowchart LR
    WD[Working Directory<br/>deine Dateien] -->|git add| ST[Staging Area<br/>für den nächsten Commit]
    ST -->|git commit| LR[Lokales Repository<br/>Geschichte]
    LR -->|git push| RM[(Remote<br/>GitLab)]
    RM -->|git pull| WD

Ein Commit ist wie ein Speicherpunkt in einem Spiel. Du entscheidest selbst, wann du einen setzt. Gute Praxis: Nach jedem abgeschlossenen Schritt, der für sich funktioniert.

Ein Branch ist eine Abzweigung in der Geschichte. Du arbeitest auf einem eigenen Branch, bis die Aufgabe fertig ist, dann wird er in main zusammengeführt (merge). So bleibt main immer in einem sauberen Zustand.

gitGraph
    commit id: "Kurs angelegt"
    commit id: "Modul 3 ergänzt"
    branch lab/04-rechte
    checkout lab/04-rechte
    commit id: "Protokoll Rechte"
    commit id: "Frage 3 beantwortet"
    checkout main
    merge lab/04-rechte id: "MR !12 gemergt"

Selbstcheck · 3 Fragen

1. Was speichert ein Commit?
2. Was ist die Staging Area?
3. Welche Aussagen stimmen? (mehrere Antworten möglich)