93 lines
2.7 KiB
Markdown
93 lines
2.7 KiB
Markdown
# 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 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 <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>
|
||
```
|