Update 03_Commits.md

main
David Hess 2025-04-07 23:16:11 +02:00 committed by GitHub
parent 48b4110be9
commit da8da53ba3
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 85 additions and 5 deletions

View File

@ -1,15 +1,95 @@
# Commits # 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:** **Ein Commit enthält:**
- Den Zustand der getrackten Dateien - Den Zustand der getrackten Dateien
- Eine Commit-Message zur Beschreibung der Änderung - Eine Commit-Message zur Beschreibung der Änderung
- Einen eindeutigen Hash (zur Identifikation) - Einen eindeutigen Hash (zur Identifikation)
- Informationen über den Autor (Name, E-Mail, Zeitstempel) - Infos über den Autor (Name, E-Mail, Zeitstempel)
> [!IMPORTANT] > [!IMPORTANT]
> **Hinweis:** Git speichert bei Commits nicht jedes Mal alle Dateien neu, sondern nur die Unterschiede (Diffs) zum vorherigen Zustand. \ > Git speichert bei Commits nicht jedes Mal alle Dateien komplett neu, sondern nur die Änderungen (Diffs) zum vorherigen Zustand. \
> Das sorgt für Effizienz und Schnelligkeit. > 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 gibts 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 <dateiname>
```
> [!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 <branchname>
```
## Ä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 <branchname>
```