Wie behebe ich Konflikte bei einem Merge-Vorgang in Git unter Windows?
- Was sind Merge-Konflikte in Git?
- Vorbereitung und Merge-Versuch
- Erkennen und Prüfen von Konflikten
- Konflikte manuell beheben
- Dateien als gelöst markieren und Commit erstellen
- Prüfen und finalisieren
- Nützliche Tools unter Windows
- Zusammenfassung
Was sind Merge-Konflikte in Git?
Ein Merge-Konflikt entsteht, wenn Git beim Zusammenführen zweier Branches in derselben Datei an derselben Stelle unterschiedliche Änderungen findet, die es nicht automatisch zusammenführen kann. Dies passiert häufig, wenn mehrere Entwickler gleichzeitig an denselben Zeilen eines Projekts arbeiten. Unter Windows wird Git typischerweise über die Eingabeaufforderung, Git Bash oder GUI-Tools wie GitKraken oder SourceTree verwendet. Die Konfliktbehebung ist jedoch unabhängig vom Betriebssystem ähnlich.
Vorbereitung und Merge-Versuch
Bevor Sie einen Merge-Vorgang starten, empfiehlt es sich, Ihre Änderungen zu committen oder zu stashen, um den Arbeitsbereich sauber zu halten. Sobald Sie den Befehl git merge branchname ausführen, versucht Git die Änderungen zusammenzuführen. Falls Konflikte auftreten, meldet Git dies im Terminal und zeigt Ihnen an, welche Dateien betroffen sind.
Erkennen und Prüfen von Konflikten
Git markiert in Dateien mit Konflikten die betroffenen Stellen mit sogenannten Conflict Markers. Diese sehen ungefähr so aus:
<<<<<<< HEADÄnderung im aktuellen Branch==========Änderung im zu mergenden Branch>>>>>>> branchnameDiese Markierungen helfen Ihnen, die Konflikte im Quellcode zu erkennen und zu verstehen, welche Änderungen von welchem Branch stammen.
Konflikte manuell beheben
Um die Konflikte zu beheben, öffnen Sie die betroffenen Dateien in Ihrem bevorzugten Texteditor oder einer IDE, die Git-Integration bietet (zum Beispiel Visual Studio Code, Atom oder Notepad++). Suchen Sie nach den Conflict Markers und entscheiden Sie, welche Änderungen Sie übernehmen möchten. Sie können die Änderungen eines Branches übernehmen, beide zusammenführen oder komplett neue Lösungen schreiben.
Nachdem Sie die Konflikte aufgelöst haben, entfernen Sie die Conflict Markers vollständig, damit der Code sauber bleibt.
Dateien als gelöst markieren und Commit erstellen
Nachdem Sie die Konflikte in allen betroffenen Dateien behoben haben, müssen Sie diese Änderungen Git mitteilen. Das geschieht mit dem Befehl:
git add dateinameAlternativ können Sie alle Dateien hinzufügen, in denen Konflikte gelöst wurden, mit:
git add .Danach schließen Sie den Merge-Vorgang mit einem Commit ab. Git schlägt Ihnen oft eine Meldung im Editor vor, die Sie bestätigen können:
git commitFalls der Merge von Git bereits teilweise vorbereitet wurde, können Sie auch direkt mit git commit abschließen.
Prüfen und finalisieren
Nach dem Commit können Sie mit git status überprüfen, ob alle Konflikte gelöst wurden und keine ungelösten Dateien mehr vorhanden sind. Es empfiehlt sich, das Projekt zu bauen oder zu testen, um sicherzustellen, dass der Code nach dem Merge korrekt funktioniert.
Nützliche Tools unter Windows
Unter Windows erleichtern grafische Merge-Tools die Konfliktbehebung. Sie können beispielsweise KDiff3, Beyond Compare oder die integrierten Merge-Tools von Visual Studio Code verwenden. Um ein Merge-Tool zu konfigurieren, setzen Sie es in git mit dem Befehl git config --global merge.tool toolname oder starten Sie das Tool während der Konfliktbehebung mit git mergetool.
Diese Werkzeuge zeigen Ihnen grafisch die Unterschiede und erleichtern das Zusammenführen von Änderungen.
Zusammenfassung
Das Beheben von Merge-Konflikten in Git unter Windows erfordert das Finden der betroffenen Dateien, das manuelle Bearbeiten der Konfliktmarker in einem Editor, das Hinzufügen der gelösten Dateien zur Staging-Area und das abschließende Commit. Unterstützt wird der Prozess durch verschiedene Tools, die je nach Vorliebe gewählt werden können.