Dienstag, 2026-02-24_Git_UDEMY¶
1) Grundidee von git merge¶
Mit git merge werden zwei Branches kombiniert.
Wichtig: - Ein Merge passiert immer aus Sicht des aktuellen Branches - Der Ziel-Branch muss ausgecheckt sein
Beispiel:
git switch master
git merge feature
→ feature wird in master integriert
2) Merge-Typen in Git¶
Es gibt mehrere Merge-Strategien, aber prüfungsrelevant sind:
- Fast-Forward Merge
- Non-Fast-Forward (Recursive) Merge
3) Fast-Forward Merge (Standardfall)¶
Voraussetzung¶
Der Master-Branch hat keine neuen Commits, seit der Feature-Branch erstellt wurde.
Ausgangssituation¶
master: A---B
\
feature: C---D
Master wurde seit Branch-Erstellung nicht verändert.
Ablauf¶
git switch master
git merge feature
Git erkennt:
→ Keine parallele Entwicklung
→ HEAD kann einfach „nach vorne geschoben“ werden
Ergebnis¶
A---B---C---D
✔ Kein Merge-Commit
✔ Nur Pointer wird verschoben
✔ Saubere lineare Historie
Git zeigt:
Fast-forward
Merksatz¶
Fast-Forward =
Kein neuer Commit – nur Zeigerbewegung
4) Squash Merge¶
Manchmal möchte man:
- Nicht alle Feature-Commits übernehmen
- Sondern nur einen zusammengefassten Commit
Befehl¶
git merge --squash feature
git commit -m "Feature integriert"
Ergebnis¶
Statt:
A---B---C---D
Erhält man:
A---B---X
X enthält: - Alle Änderungen aus C und D - Aber als EIN Commit
Wichtig: - Kein automatischer Commit - Man muss selbst committen
Vorteil¶
- Aufgeräumte Historie
- Feature erscheint als ein logischer Block
5) Recursive Merge (Non Fast-Forward)¶
Voraussetzung¶
Beide Branches haben neue Commits seit der Trennung.
Ausgangssituation¶
master: A---B---E
\
feature: C---D
Hier existiert parallele Entwicklung.
Ablauf¶
git switch master
git merge feature
Git kann nicht einfach vorwärts springen.
Ergebnis¶
A---B---E
\ \
C---D---M
M = Merge-Commit
Eigenschaften¶
✔ Merge-Commit wird automatisch erstellt
✔ Historie zeigt Verzweigung
✔ Beide Entwicklungsstränge bleiben sichtbar
Git-Ausgabe:
Merge made by the 'recursive' strategy.
Merksatz¶
Recursive Merge =
Zwei Entwicklungszweige werden sichtbar zusammengeführt
6) --no-ff Option¶
Selbst wenn Fast-Forward möglich wäre, kann man erzwingen:
git merge --no-ff feature
Ergebnis: - Merge-Commit wird erzeugt - Feature bleibt als eigener Block sichtbar
Wird oft in Teams genutzt.
7) Vergleich¶
| Merkmal | Fast-Forward | Recursive |
|---|---|---|
| Neuer Commit | Nein | Ja |
| Historie linear | Ja | Nein |
| Zeigt Branch-Struktur | Nein | Ja |
| Standardfall bei Parallelentwicklung | Nein | Ja |
8) Wann nutzt man was?¶
Fast-Forward: - Kleine Features - Lokale Arbeit - Saubere Historie gewünscht
Recursive: - Teamarbeit - Branch soll sichtbar bleiben - Parallele Entwicklung
Squash: - Viele kleine Commits - Feature soll als ein Block erscheinen - Code-Review sauber halten
9) Prüfungsrelevante Punkte¶
- Unterschied Fast-Forward vs Recursive
- Was ist ein Merge-Commit?
- Wann entsteht automatisch ein Merge-Commit?
- Was bewirkt
--squash? - Was bewirkt
--no-ff?
10) Kernprinzip¶
Ein Merge bedeutet nicht:
Dateien zusammenkopieren
Sondern:
Commit-Historien zusammenführen
Branches sind nur Zeiger auf Commits.