Files
OZM-Keks-Handbuch-v1/crumbpage-12-git-basics.md
Krümel Branko 431c747972 docs: fresh breadcrumbs for paths 15-17 - no more getting lost! 🍞🌲
Updated admin-vektor index and fixed linear navigation links. The Crystal Owl approves. 🦉
2025-12-11 23:38:58 +01:00

152 lines
3.5 KiB
Markdown

# 🧭 Crumbpage 12: Git - Das Gedächtnis des Waldes
**Subtitle:** *Zeitmaschinen bauen und Welten teilen*
**Pfad:** 12 von 12
**Schwierigkeit:** ⭐⭐⭐⭐ (4/5)
**Zeit:** ~2 Stunden
**Voraussetzungen:** Pfad 4 (Editoren) & Pfad 8 (SSH Keys)
> *"Wer seine Geschichte nicht kennt, ist verdammt, sie zu wiederholen. Git vergisst nichts."* 🌲
---
## 📋 Was du in diesem Pfad lernst
```
✓ Was ist Version Control? (Zeitmaschine)
✓ Repository, Commit, Push, Pull
✓ .gitignore (Was im Wald bleibt)
✓ Gitea/GitHub (Der zentrale Sammelplatz)
✓ SSH Keys für Git nutzen
```
---
## 🎯 Lernziele
Nach diesem Pfad kannst du:
- [ ] Ein Verzeichnis in ein Git-Repo verwandeln (`git init`)
- [ ] Änderungen speichern (`git commit`)
- [ ] Deinen Code auf deinen Gitea-Server hochladen (`git push`)
- [ ] Verstehen, warum `git push --force` verboten ist
---
## 🌱 Grundkonzepte
### Konzept 1: Die Zeitmaschine
Stell dir vor, du schreibst ein Buch.
- **Ohne Git:** `buch_final.txt`, `buch_final_echt.txt`, `buch_final_v2.txt` 🤯
- **Mit Git:** `buch.txt` (und Git merkt sich jede Änderung in einer Datenbank).
### Konzept 2: Lokal vs. Remote
- **Lokal:** Dein Laptop (Dein Rucksack).
- **Remote:** Dein Gitea/GitHub (Das Basislager).
Du arbeitest lokal und "pushst" (schiebst) Änderungen zum Basislager, damit andere sie "pullen" (ziehen) können.
---
## 🔧 Praktische Befehle
### Befehl 1: `git init` & `git clone`
```bash
# Neues Repo starten
$ git init
# Vorhandenes Repo herunterladen
$ git clone git@dein-gitea.com:user/repo.git
```
### Befehl 2: Der Workflow (The Happy Path)
```bash
# 1. Status prüfen (Was hat sich geändert?)
$ git status
# 2. Änderungen vormerken (Staging)
$ git add datei.txt
# oder alles: git add .
# 3. Änderungen speichern (Commit)
$ git commit -m "feat: habe kapitel 1 geschrieben"
# 4. Hochladen (Push)
$ git push origin main
```
### Befehl 3: `git log` (Geschichtsbuch)
```bash
$ git log --oneline
# Zeigt die letzten Änderungen kurz an.
```
---
## 💡 Best Practices
### DO ✅
```bash
# 1. Sprechende Commit-Messages
# Gut: "fix: login bug in auth.py"
# Schlecht: "fix", "update", "wip"
# 2. .gitignore nutzen
# Passwörter, Logs und temporäre Dateien gehören NICHT in Git!
# Erstelle eine Datei namens .gitignore und schreibe rein:
# *.log
# .env
```
### DON'T ❌
```bash
# 1. Secrets committen
# Wenn du ein Passwort committest, ist es für immer in der History.
# Auch wenn du es löschst! (Man kann in der Zeit zurückreisen).
# 2. Auf dem Server arbeiten
# Code schreibt man lokal, pusht ihn, und pullt ihn auf dem Server.
# Nicht auf dem Server via nano programmieren (außer für Hotfixes).
```
---
## 🎓 Hands-On Übungen
### Übung 1: Dein erstes Repo
1. Erstelle einen Ordner `mein-projekt`.
2. `git init`
3. Erstelle `README.md` mit etwas Text.
4. `git add README.md`
5. `git commit -m "first commit"`
### Übung 2: Ab in den Wald (Remote)
1. Erstelle ein leeres Repo auf deinem Gitea.
2. Verbinde es lokal:
`git remote add origin git@194.164.194.191:kruemel/mein-projekt.git`
*(Passe die URL an!)*
3. `git push -u origin main`
**Frage:** Hat es nach einem Passwort gefragt?
- **Ja:** Deine SSH Keys sind noch nicht im Gitea hinterlegt oder falsch konfiguriert.
- **Nein:** Wuhuuu! Deine Keys funktionieren! 🔑✨
---
## 🦉 Crystal Owl's Weisheit
> *"Code, der nicht in Git ist, existiert nicht. Code, der nicht gepusht ist, ist nur eine Illusion."*
---
**Navigation:**
[← Zurück: First Access](crumbpage-11-first-access.md) | [Weiter: Pipes & Filters →](crumbpage-13-pipes-filters.md)