diff --git a/Script/03_Commits.md b/Script/03_Commits.md index 4443612..a485b74 100644 --- a/Script/03_Commits.md +++ b/Script/03_Commits.md @@ -1,15 +1,95 @@ # Commits -### Was ist ein Commit? +## Was ist ein Commit? -Ein **Commit** ist ein Schnappschuss des Projekts zu einem bestimmten Zeitpunkt. Er speichert den aktuellen Stand der getrackten Dateien und ermöglicht so eine strukturierte Versionshistorie. +Ein **Commit** ist ein Schnappschuss deines Projekts zu einem bestimmten Zeitpunkt. Er speichert den aktuellen Stand der getrackten Dateien und sorgt für eine nachvollziehbare Versionshistorie. **Ein Commit enthält:** - Den Zustand der getrackten Dateien - Eine Commit-Message zur Beschreibung der Änderung - Einen eindeutigen Hash (zur Identifikation) -- Informationen über den Autor (Name, E-Mail, Zeitstempel) +- Infos über den Autor (Name, E-Mail, Zeitstempel) > [!IMPORTANT] -> **Hinweis:** Git speichert bei Commits nicht jedes Mal alle Dateien neu, sondern nur die Unterschiede (Diffs) zum vorherigen Zustand. \ -> Das sorgt für Effizienz und Schnelligkeit. +> Git speichert bei Commits nicht jedes Mal alle Dateien komplett neu, sondern nur die Änderungen (Diffs) zum vorherigen Zustand. \ +> Das macht das Ganze effizient und schnell. + +## Warum Commits? + +Mit Commits kannst du: +- Änderungen nachvollziehen („Was wurde wann geändert und warum?“) +- Fehler zurückverfolgen und frühere Versionen wiederherstellen +- Änderungen rückgängig machen, ohne alles manuell löschen zu müssen + +> [!TIP] +> Commits sind wie Checkpoints in nem Game: Wenn was schiefläuft, springst du einfach zu einem stabilen Zustand zurück. + +## Änderungen tracken + +Git funktioniert nicht von allein – du entscheidest selbst, welche Änderungen wichtig sind und welche ignoriert werden sollen. Dafür gibt’s das sogenannte **Staging Area-System**. + +Eine Datei in deinem Projekt kann drei Zustände haben: +- **Untracked:** Git kennt die Datei noch nicht. +- **Staged:** Die Datei wurde ausgewählt („zum Commit vorgemerkt“). +- **Committed:** Die Datei ist Teil eines Snapshots im Repository – also dauerhaft gespeichert. + +## Die Staging Area + +Zwischen deinem Arbeitsverzeichnis und dem Repository liegt die **Staging Area**. Sie ist wie ne Zwischenablage für alles, was beim nächsten Commit dabei sein soll. + +Alles auf einmal stagen: +```bash +git add . +``` + +Nur bestimmte Dateien stagen: +```bash +git add +``` + +> [!TIP] +> Bevor du anfängst zu stagen, immer erstmal die neuesten Änderungen vom Remote holen: `git pull` + +## Commit erstellen + +Ein Commit speichert die gestagten Änderungen dauerhaft im lokalen Repository. Befehl: + +```bash +git commit -m "Kurze Commit-Nachricht" +``` + +Die Message sollte kurz und klar sagen, was geändert wurde. Beispiel: + +```bash +git commit -m "Fix: Speicherleck im Audio-Buffer behoben" +``` + +## Commit pushen + +Ein Commit ist erstmal nur lokal. Um ihn ins Remote-Repo (z. B. GitHub) zu pushen: + +```bash +git push +``` + +Wenn du nen neuen Branch pushst oder ihn explizit setzen willst: + +```bash +git push -u origin +``` + +## Änderungen pullen + +Wenn du die neuesten Änderungen aus dem Remote-Repository holen willst: + +```bash +git pull +``` + +Das zieht die neuesten Commits vom Remote (meist `origin`) und merged sie in deinen aktuellen Branch. + +Von einem bestimmten Remote oder Branch: + +```bash +git pull origin +```