chore: initial training material setup
This commit is contained in:
@@ -0,0 +1,158 @@
|
||||
# ✅ Lösung – Aufgabe 04: Merge & Konflikte
|
||||
|
||||
> Schau dir diese Lösung erst an, nachdem du die Aufgabe selbst versucht hast!
|
||||
|
||||
---
|
||||
|
||||
## Schritt-für-Schritt-Lösung
|
||||
|
||||
### 1. Ausgangssituation
|
||||
|
||||
```bash
|
||||
mkdir konflikt-uebung
|
||||
cd konflikt-uebung
|
||||
git init
|
||||
cp ../04-merge-und-konflikte/konflikt-vorlage.txt .
|
||||
git add konflikt-vorlage.txt
|
||||
git commit -m "chore: Vorlage hinzugefügt"
|
||||
```
|
||||
|
||||
### 2. Ersten Feature-Branch erstellen und ändern
|
||||
|
||||
```bash
|
||||
git switch -c feature/version-a
|
||||
```
|
||||
|
||||
Öffne `konflikt-vorlage.txt` und ändere Zeile 3 zu:
|
||||
|
||||
```text
|
||||
Zeile 3: Dies ist Version A – geändert von Branch feature/version-a.
|
||||
```
|
||||
|
||||
```bash
|
||||
git add konflikt-vorlage.txt
|
||||
git commit -m "feat: Version A in Zeile 3 eingetragen"
|
||||
```
|
||||
|
||||
### 3. Fast-Forward-Merge
|
||||
|
||||
```bash
|
||||
git switch main
|
||||
git merge feature/version-a
|
||||
```
|
||||
|
||||
```text
|
||||
Updating a1b2c3d..b2c3d4e
|
||||
Fast-forward
|
||||
konflikt-vorlage.txt | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
```
|
||||
|
||||
Kein Merge-Commit! `main` wurde einfach vorgespult.
|
||||
|
||||
### 4. Zweiten Feature-Branch erstellen
|
||||
|
||||
```bash
|
||||
git switch -c feature/version-b
|
||||
```
|
||||
|
||||
Öffne `konflikt-vorlage.txt` und ändere Zeile 3 zu:
|
||||
|
||||
```text
|
||||
Zeile 3: Dies ist Version B – geändert von Branch feature/version-b.
|
||||
```
|
||||
|
||||
```bash
|
||||
git add konflikt-vorlage.txt
|
||||
git commit -m "feat: Version B in Zeile 3 eingetragen"
|
||||
```
|
||||
|
||||
### 5. main auch ändern (Konflikt vorbereiten)
|
||||
|
||||
```bash
|
||||
git switch main
|
||||
```
|
||||
|
||||
Öffne `konflikt-vorlage.txt` und ändere Zeile 3 zu:
|
||||
|
||||
```text
|
||||
Zeile 3: Dies ist die main-Version – direkt auf main geändert.
|
||||
```
|
||||
|
||||
```bash
|
||||
git add konflikt-vorlage.txt
|
||||
git commit -m "fix: Zeile 3 auf main angepasst"
|
||||
```
|
||||
|
||||
### 6. Konflikt provozieren
|
||||
|
||||
```bash
|
||||
git merge feature/version-b
|
||||
```
|
||||
|
||||
```text
|
||||
Auto-merging konflikt-vorlage.txt
|
||||
CONFLICT (content): Merge conflict in konflikt-vorlage.txt
|
||||
Automatic merge failed; fix conflicts and then commit the result.
|
||||
```
|
||||
|
||||
### 7. Konflikt ansehen
|
||||
|
||||
Öffne `konflikt-vorlage.txt`. Du siehst:
|
||||
|
||||
```text
|
||||
Zeile 1: Diese Zeile wird nicht verändert.
|
||||
Zeile 2: Diese Zeile wird auch nicht verändert.
|
||||
<<<<<<< HEAD
|
||||
Zeile 3: Dies ist die main-Version – direkt auf main geändert.
|
||||
=======
|
||||
Zeile 3: Dies ist Version B – geändert von Branch feature/version-b.
|
||||
>>>>>>> feature/version-b
|
||||
Zeile 4: Diese Zeile bleibt wieder gleich.
|
||||
Zeile 5: Ende der Vorlage.
|
||||
```
|
||||
|
||||
### 8. Konflikt auflösen
|
||||
|
||||
Entscheide dich für eine Lösung – zum Beispiel eine Kombination:
|
||||
|
||||
```text
|
||||
Zeile 1: Diese Zeile wird nicht verändert.
|
||||
Zeile 2: Diese Zeile wird auch nicht verändert.
|
||||
Zeile 3: Finale Version – kombiniert aus main und feature/version-b.
|
||||
Zeile 4: Diese Zeile bleibt wieder gleich.
|
||||
Zeile 5: Ende der Vorlage.
|
||||
```
|
||||
|
||||
Alle Konfliktmarker entfernen, dann:
|
||||
|
||||
```bash
|
||||
git add konflikt-vorlage.txt
|
||||
git commit -m "fix: Merge-Konflikt in konflikt-vorlage.txt aufgelöst"
|
||||
```
|
||||
|
||||
```text
|
||||
[main f6g7h8i] fix: Merge-Konflikt in konflikt-vorlage.txt aufgelöst
|
||||
```
|
||||
|
||||
### 9. Abschlusszustand
|
||||
|
||||
```bash
|
||||
git log --oneline --graph
|
||||
```
|
||||
|
||||
```text
|
||||
* f6g7h8i (HEAD -> main) fix: Merge-Konflikt aufgelöst
|
||||
|\
|
||||
| * e5f6g7h (feature/version-b) feat: Version B in Zeile 3 eingetragen
|
||||
* | d4e5f6g fix: Zeile 3 auf main angepasst
|
||||
|/
|
||||
* b2c3d4e feat: Version A in Zeile 3 eingetragen
|
||||
* a1b2c3d chore: Vorlage hinzugefügt
|
||||
```
|
||||
|
||||
Der Merge-Commit `f6g7h8i` hat zwei Eltern-Commits (`d4e5f6g` und `e5f6g7h`).
|
||||
|
||||
---
|
||||
|
||||
*Zurück zur [Aufgabe](../04-merge-und-konflikte/aufgabe.md)*
|
||||
Reference in New Issue
Block a user