Update 03_Commits.md
parent
48b4110be9
commit
da8da53ba3
|
@ -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 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>
|
||||||
|
```
|
||||||
|
|
||||||
|
> [!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>
|
||||||
|
```
|
||||||
|
|
Loading…
Reference in New Issue