Git/Script/03_Commits.md

93 lines
2.7 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# Commits
## Was ist ein Commit?
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)
- Infos über den Autor (Name, E-Mail, Zeitstempel)
**Info:** 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
**Tipp:** 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>
```
**Tipp:** 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>
```