Conflict Markers ·
git merge ·
git rebase ·
git mergetool ·
--ours/--theirs ·
Strategien & Tipps
Konflikte entstehen, wenn Git nicht automatisch entscheiden kann, welche Änderungen übernommen werden sollen. Diese Cheatsheet zeigt Ihnen, wie Sie Konflikte effizient erkennen und lösen.
Conflict Markers werden von Git in die Datei eingefügt, wenn ein Konflikt auftritt. Der Bereich zwischen <<<<<< und >>>>>> muss manuell aufgelöst werden.
git grep --orphan '^[<=>]\{7\}'. Löschen Sie alle Marker und die nicht benötigten Versionen – nur der finale Code sollte übrig bleiben.
Merge Konflikte treten auf, wenn Sie zwei Branches zusammenführen, die an der gleichen Stelle geändert wurden. Git zeigt die Konflikte an und Sie müssen sie manuell auflösen.
git pull --rebase oder git fetch und git status prüfen. So minimieren Sie Überraschungen. Bei großen Konflikten git merge --abort und später erneut versuchen.
Rebase Konflikte treten beim git rebase auf, wenn Commits auf eine neue Basis angewendet werden und dabei Konflikte entstehen. Die Auflösung erfolgt ähnlich wie beim Merge.
git rebase --skip verwenden, um einen Commit zu überspringen (wenn er nicht mehr benötigt wird). --abort bringt Sie zurück zum Zustand vor dem Rebase.
git mergetool startet ein grafisches oder textbasiertes Tool zum Lösen von Konflikten. Beliebte Tools sind Meld, Vimdiff, KDiff3 und Beyond Compare.
| Tool | Beschreibung | Installation |
|---|---|---|
| meld | Grafisches Diff-Tool (Linux, Windows, macOS) | sudo apt install meld |
| vimdiff | Vim mit Diff-Modus (standardmäßig verfügbar) | vim (vorinstalliert) |
| kdiff3 | Leistungsstarkes grafisches Merge-Tool | sudo apt install kdiff3 |
| p4merge | Perforce Merge Tool (kostenlos) | Download von Perforce |
| bc3 | Beyond Compare 3 (kommerziell) | Download von Scooter Software |
do (diff obtain) um Änderungen vom anderen Fenster zu übernehmen und dp (diff put) um Änderungen zu übertragen. :wq speichert und beendet.
--ours und --theirs sind Optionen, um Konflikte automatisch zu lösen – indem Sie Ihre Version oder die des anderen Branches übernehmen. Achtung: Dies kann zu Datenverlust führen!
--ours und --theirs sind gefährlich – sie überschreiben alle Konflikte ohne Rücksicht auf die tatsächlichen Änderungen. Verwenden Sie sie nur, wenn Sie genau wissen, welche Version richtig ist!
Strategien & Tipps helfen, Konflikte zu vermeiden und effizient zu lösen. Eine gute Vorbereitung und Kommunikation im Team sind der Schlüssel.
| Praxis | Beschreibung |
|---|---|
| Häufig pullen | Tägliches git pull --rebase minimiert Konflikte |
| Kleine Commits | Kleinere, fokussierte Commits sind einfacher zu mergen |
| Feature Branches | Jedes Feature in einem eigenen Branch entwickeln |
| Merge vs Rebase | Rebase für eine saubere Historie, Merge für die Nachvollziehbarkeit |
| Git diff nutzen | Konflikte vor dem Merge mit git diff analysieren |
| Code Reviews | Reviews helfen, Konflikte frühzeitig zu erkennen |
Marker
merge
rebase
mergetool
--ours
Strategien
git merge --abort ·
git rebase --continue ·
git mergetool ·
git checkout --ours