Files

3.3 KiB
Raw Permalink Blame History

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

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

git switch -c feature/version-a

Öffne konflikt-vorlage.txt und ändere Zeile 3 zu:

Zeile 3: Dies ist Version A  geändert von Branch feature/version-a.
git add konflikt-vorlage.txt
git commit -m "feat: Version A in Zeile 3 eingetragen"

3. Fast-Forward-Merge

git switch main
git merge feature/version-a
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

git switch -c feature/version-b

Öffne konflikt-vorlage.txt und ändere Zeile 3 zu:

Zeile 3: Dies ist Version B  geändert von Branch feature/version-b.
git add konflikt-vorlage.txt
git commit -m "feat: Version B in Zeile 3 eingetragen"

5. main auch ändern (Konflikt vorbereiten)

git switch main

Öffne konflikt-vorlage.txt und ändere Zeile 3 zu:

Zeile 3: Dies ist die main-Version  direkt auf main geändert.
git add konflikt-vorlage.txt
git commit -m "fix: Zeile 3 auf main angepasst"

6. Konflikt provozieren

git merge feature/version-b
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:

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:

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:

git add konflikt-vorlage.txt
git commit -m "fix: Merge-Konflikt in konflikt-vorlage.txt aufgelöst"
[main f6g7h8i] fix: Merge-Konflikt in konflikt-vorlage.txt aufgelöst

9. Abschlusszustand

git log --oneline --graph
*   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