Überblick über Merge-Konflikte (Merge Conflicts)
Merge-Konflikte verstehen
Merge-Konflikte treten auf, wenn Git die Unterschiede zwischen zwei Commits nicht automatisch auflösen kann. Dies passiert typischerweise, wenn:
- Der gleiche Teil einer Datei in zwei Branches auf unterschiedliche Weise geändert wird
- Änderungen an der gleichen Zeile oder an benachbarten Codezeilen vorgenommen werden
Visualisierung von Konflikten
graph TD
A[Branch A] -->|Modify Same Line| C{Merge Conflict}
B[Branch B] -->|Modify Same Line| C
C -->|Manual Resolution| D[Merged Code]
Häufige Konfliktszenarien
Szenario |
Beschreibung |
Zeilenänderung |
Unterschiedliche Änderungen an der gleichen Zeile |
Dateilöschung |
Ein Branch löscht eine Datei, ein anderer ändert sie |
Dateiumbenennung |
Konflikte in der Dateistruktur |
Konfliktmarker
Wenn ein Konflikt auftritt, markiert Git die Datei mit speziellen Markern:
<<<<<<< HEAD
Current branch code
=======
Incoming branch code
>>>>>>> branch-name
Konflikterkennung
## Attempt to merge branches
git merge feature-branch
## If conflict occurs
## Conflict files will be marked with conflict markers
Auflösungsstrategien
- Manuelle Bearbeitung
- Verwendung von Merge-Tools (Zusammenführungs-Tools)
- Auswahl spezifischer Änderungen
Praktisches Beispiel
## Create conflicting changes
echo "Original content" > file.txt
git add file.txt
git commit -m "Initial commit"
## Create two branches with different modifications
git checkout -b branch-a
echo "Branch A modification" > file.txt
git commit -am "Branch A change"
git checkout main
git checkout -b branch-b
echo "Branch B modification" > file.txt
git commit -am "Branch B change"
## Attempt merge (will cause conflict)
git branch branch-a
Best Practices
- Kommunizieren Sie mit den Teammitgliedern
- Holen Sie sich häufig Änderungen (Pull)
- Verwenden Sie aussagekräftige Commit-Nachrichten
LabEx empfiehlt, einen systematischen Ansatz zur effizienten Behandlung von Merge-Konflikten zu entwickeln.