Direkt zum Inhalt

Auflösen von Merge-Konflikten in Git Tutorial

Lerne verschiedene Befehle und Werkzeuge für das Zusammenführen zweier Zweige und das Lösen von Konflikten in Git, eine wichtige Fähigkeit für Datenwissenschaftler.
Aktualisierte 16. März 2025  · 10 Min. Lesezeit

Was ist ein Git Merge-Konflikt?

Beim Versionskontrollsystem Git geht es vor allem darum, im Team zu arbeiten und zu Projekten beizutragen. In der Regel arbeiten die Entwickler an isolierten Zweigen, und wenn sie fertig sind, führen sie die Änderungen mit dem Hauptzweig zusammen. Diese Art der Teamarbeit ist sehr produktiv und effektiv bei der Fehlersuche. Manchmal arbeiten mehrere Entwickler an derselben Codezeile, und wenn sie versuchen, die Änderungen zusammenzuführen, entstehen Konflikte. 

Git Merge-Konflikte Grafik
Einfaches Beispiel für einen Git-Konflikt

Das obige Diagramm ist ein perfektes Beispiel dafür, wie ein typischer Git-Merge-Konflikt entsteht. Der Hauptzweig hat eine Datei mit dem Text "HALLO, WORLD!". Der Benutzername abid gabelt den Hauptzweig auf und ändert den Text in "HELLO, CAT!". Während abid Änderungen vornimmt, wird auch der ursprüngliche Hauptzweig in "HALLO, DOG!" geändert. Das Zusammenführen dieser Zweige führt zu einem Zusammenführungskonflikt und hält den Prozess an.  

Die Hauptaufgabe des git merge Befehls ist es, zwei Zweige zu kombinieren und die Konflikte automatisch aufzulösen. Von Zeit zu Zeit kommt es jedoch zu Konflikten, wenn zwei Personen die gleiche Codezeile geändert oder wichtige Dateien entfernt haben, an denen ein anderer Entwickler gearbeitet hat. Git markiert diese Änderungen und hält den Zusammenführungsprozess an. In diesem Fall wurde der Konflikt nicht automatisch aufgelöst, sondern der Entwickler muss manuell Änderungen vornehmen oder Tools verwenden, um den Konflikt aufzulösen.

Werde Dateningenieur

Werde ein Dateningenieur durch fortgeschrittenes Python-Lernen
Kostenloses Lernen beginnen

Typen zusammenführen

Git merge und rebase sind die beiden Möglichkeiten, um Commits aus dem Zielzweig in den Quellzweig zu integrieren. Außerdem führt Git Merge entweder einen Fast-Forward oder einen No-Fast-Forward Merge durch. Wenn der Kopf des Zielzweigs im Quellzweig vorhanden ist, wird der Zusammenführungstyp standardmäßig eine schnelle Zusammenführung sein und wenn er fehlt, eine nicht-schnelle Zusammenführung. Git rebase ist eine andere Art der Zusammenführung, bei der die Commit-Historie des Zielzweigs neu geordnet wird. 

Schnelles Zusammenführen

Git Fast Forward Merge

Standardmäßig verwendet Git merge den Schnellvorlauf, um fehlende Commits in den Zielzweig zu integrieren. Er wird zum Beispiel verwendet, um den lokalen Zweig von einem entfernten Server mit dem Pull-Befehl zu aktualisieren. Der Schnellvorlauf führt nicht zu Konflikten beim Zusammenführen, da Git ihn nicht anwendet, wenn der Kopf des Zielzweigs im Quellzweig fehlt. 

Nicht-schnell-vorwärts-Zusammenführung

Git No-fast-forward Merge

Ein No-Fast-Forward Merge wird auch als Three-Way Merge oder True Merge bezeichnet. Er erstellt einen neuen Commit auf einem Zielzweig, indem er die Änderungen im Quell- und Zielzweig integriert. Die Änderungen werden nach dem letzten gemeinsamen Commit in beiden Zweigen vermischt. In unserem Fall ist es nach dem C. Diese Art der Zusammenführung führt zu einem Git-Zusammenführungskonflikt, wenn der Quellzweig mit dem Zielzweig in Konflikt steht. Im obigen Diagramm wird der Merge Commit (X) durch die Integration des Quell- und des Zielzweigs erstellt, wobei K und E die Eltern des Merge Commits sind. 

Rebase 

Git Rebase

Git rebase unterscheidet sich ein wenig von anderen Arten. Sie ändert die Reihenfolge der Commit-Historie des Zielzweigs. Beim Rebase wird der Quellzweig so integriert, dass der Zielzweig alle Änderungen aus dem Quellzweig enthält, gefolgt von allen Zielzweig-Commits nach dem letzten gemeinsamen Commit. In unserem Fall ist der letzte gemeinsame Commit C, während D und E aus dem Quellzweig stammen. Der K*-Commit ist derselbe wie K mit einer anderen Commit-ID. Ähnlich wie bei einem No-Fast-Forward-Merge wird Git bei Kompatibilitätsproblemen zwischen dem Quell- und dem Zielzweig einen Fehler melden, um den Konflikt zu lösen, bevor das Rebasing abgeschlossen wird. 

Arten von Git Merge-Konflikten

Es gibt zwei Arten von Git-Zusammenführungskonflikten: zu Beginn und während des Zusammenführungsprozesses - Atlassian. In diesem Abschnitt lernst du beide Arten kennen und erfährst, wie du das jeweilige Szenario lösen kannst. 

Zu Beginn des Zusammenschlusses

Git Merge schlägt beim Start fehl, wenn es Änderungen im Arbeitsverzeichnis oder im Staging-Bereich gibt. Er scheitert am Anfang, um zu verhindern, dass die Änderungen durch eingehende Merge Commits überschrieben werden. Dies geschieht aufgrund von Konflikten mit lokalen Änderungen, nicht mit anderen Zweigen oder Entwicklern. Um den lokalen Zustand zu stabilisieren, kannst du Befehle wie git stash, git commit, git checkout, oder git reset verwenden.

Während des Zusammenschlusses

Ein Fehler beim Zusammenführen bedeutet, dass es einen Konflikt zwischen dem Quell- und dem Zielzweig gibt, wenn mehrere Entwickler dieselbe Datei geändert haben. Wenn das automatische Zusammenführen fehlschlägt, fordert Git dich auf, die Probleme manuell zu lösen. Du kannst auch Tools von Drittanbietern verwenden, die dich bei der Visualisierung und Integration der Änderungen unterstützen.

Befehle zum Auflösen von Git Merge-Konflikten

In diesem Abschnitt lernen wir verschiedene native Befehle kennen, mit denen wir Git-Merge-Konflikte visualisieren und auflösen können. 

Gemeinsame Befehle

Git-Status ist der am häufigsten verwendete Befehl, um den Status von geänderten Dateien, Staging Area und Commits anzuzeigen. Während des Zusammenführungsprozesses wird es verwendet, um konfliktbehaftete Dateien zu identifizieren.  

git status

Das Git-Protokoll mit --merge-Argumenten liefert die Liste der Commits, die im Konflikt mit dem Quellzweig stehen. 

git log --merge

Standardmäßig zeigt dir die Option git diff den Unterschied zwischen unübertragenen Änderungen und vorherigen Übertragungen an. Git diff wird für den Vergleich von Zweigen, Übertragungen und Dateien verwendet. Das ist nützlich, um zukünftige Zusammenführungskonflikte zu vermeiden. 

git diff 

Befehle für die Zusammenführung scheitern am Start

Der Checkout wird verwendet, um Änderungen rückgängig zu machen oder zu einem neuen oder alten Zweig zu wechseln. 

git checkout

Der Git-Reset dient dazu, die Änderungen im Arbeitsverzeichnis und im Staging-Bereich rückgängig zu machen. 

git reset --mixed

Befehle für Konflikte während der Zusammenführung

Mit dem Argument --abort wird der Zusammenführungsprozess gestoppt und die Änderungen werden in den ursprünglichen Zustand vor Beginn der Zusammenführung zurückversetzt. 

git merge --abort

Git reset wird normalerweise während des Zusammenführungsprozesses verwendet, um die konfliktbehafteten Dateien in ihren ursprünglichen Zustand zurückzusetzen.

git reset

Auflösen von Konflikten zwischen gelöschten und geänderten Dateien

Ein Git-Konflikt entsteht, wenn du die Datei im aktuellen Zweig gelöscht hast und jemand anderes sie in einem anderen Zweig geändert hat. In diesem Fall kannst du entweder eine Datei hinzufügen und übertragen,

git add <filename>

oder du kannst die Datei entfernen und übertragen. 

git rm <filename>

📌 Git Merge Konfliktlösung Spickzettel

Befehl Beschreibung Beispiel Verwendung
git status Zeigt Dateien mit Konflikten beim Zusammenführen git status
git diff Zeigt Unterschiede zwischen Commits oder Zweigen an git diff HEAD
git log --merge Zeigt die an einem Konflikt beteiligten Commits git log --merge
git merge --abort Hebt einen Zusammenschluss auf und stellt den vorherigen Zustand wieder her git merge --abort
git reset --hard HEAD Setzt den Zweig auf den letzten bestätigten Zustand zurück git reset --hard HEAD
git checkout -- <filename> Verwirft Änderungen in einer bestimmten Datei git checkout -- README.md
git mergetool Öffnet das konfigurierte Zusammenführungswerkzeug zur Konfliktlösung git mergetool
git add <filename> Markiert einen Konflikt nach der Bearbeitung als gelöst git add README.md
git commit -m "<message>" Speichert aufgelöste Änderungen nach einem Zusammenführungskonflikt git commit -m "Resolved merge conflict"
git rebase --continue Setzt einen unterbrochenen Rebase fort, nachdem Konflikte gelöst wurden git rebase --continue
git rm <filename> Entfernt eine Datei, die in einem Zweig gelöscht und in einem anderen geändert wurde git rm README.md
git push Verschiebt Änderungen nach dem Auflösen von Konflikten beim Zusammenführen git push origin main

Visuelle Zusammenführungswerkzeuge

Zusammenführungswerkzeuge sind benutzerfreundliche visuelle Hilfsmittel, um alle Arten von Zusammenführungskonflikten zu erkennen und aufzulösen. Einige der Tools unterstützen zusätzliche Funktionen wie den Vergleich von Änderungen, Git-Operationen sowie Projekt- und Repository-Management. Es gibt zwei Arten von Git-Merge-Tools: Terminal-basierte und GUI-basierte. Die terminalbasierten Tools werden in der PowerShell oder Bash geöffnet, und die GUI-basierten Tools werden in einer Fensterumgebung geöffnet. 

Um die Liste der installierten und gültigen Tools zu überprüfen, verwende:

git mergetool --tool-help 

Die Liste besteht aus allen gültigen Tools, die installiert und mit Git-Befehlen integriert werden können.

Wir haben zum Beispiel vim und nvim standardmäßig installiert. Wenn du den Unterschied zwischen einer nicht übertragenen Datei und einer vorherigen Übertragung sehen willst, gibst du ein:

git difftool --tool=vimdiff3

Das Tool vimdiff3 hebt die Änderungen hervor und lässt dich Commits im Terminal vergleichen. 

Unterschied zwischen zwei Versionen der gleichen Datei in Vimdiff3

Unterschied zwischen zwei Versionen der gleichen Datei in vimdiff3

Melden

Meld ist ein kostenloses und quelloffenes Tool, das die Lösung von Merge-Konflikten auf eine neue Ebene hebt. Um es in Git zu integrieren, musst du zunächst das Setup von der offiziellen Seite herunterladen und installieren. Als Nächstes fügst du sie der globalen Konfiguration hinzu, damit Git Meld standardmäßig zur Konfliktlösung startet.  

Die folgenden Konfigurationsbefehle gelten nur für Windows-Benutzer. Die einzige Änderung, die du vornehmen musst, ist, den Pfad der Meld-Installationsdatei für Mac oder Linux zu ändern. 

git config --global merge.tool meld 

git config --global mergetool.meld.path "C:/Program Files (x86)/Meld/Meld.exe" 

git config --global diff.tool meld

git config --global difftool.meld.path "C:/Program Files (x86)/Meld/Meld.exe"

Nachdem du die Standardeinstellungen festgelegt hast, kannst du git difftool in das lokale Git-Verzeichnis eingeben, um die Windows-Version von Meld zu starten, oder du kannst git mergetool eingeben, um Zusammenführungskonflikte aufzulösen, wie unten gezeigt.

Auflösen eines Zusammenführungskonflikts mit Meld in Git

Auflösen eines Zusammenführungskonflikts mit Meld

VSCode

VSCode bietet die beste und beliebteste Möglichkeit, den Merge-Konflikt zu lösen. Wenn Git Dateien nicht automatisch zusammenführt, markiert VSCode den konfliktbehafteten Code und gibt dir vier Optionen: aktuelle Änderungen akzeptieren, eingehende Änderungen akzeptieren, beide Änderungen akzeptieren und Änderungen vergleichen. Du kannst diese Optionen nutzen, um deine Datei zu bereinigen und alle anstehenden Probleme zu lösen. 

Auflösen eines Git Merge-Konflikts mit VSCode

Auflösen eines Zusammenführungskonflikts mit VSCode

Wenn du nach einer Komplettlösung für deine Git-Operationen suchst, solltest du GitKraken ausprobieren. Es wird mit einem kostenlosen Client, der VSCode-Erweiterung, geliefert und bietet ein eingebautes Tool zur Lösung von Merge-Konflikten.  

Wie man einen Git Merge-Konflikt auflöst

In diesem Abschnitt lernen wir, wie man einen Git-Zusammenführungskonflikt erzeugt und ihn anschließend auflöst. Das Tutorial ist in zwei Teile unterteilt. Im ersten Teil lernen wir, Git-Konflikte lokal zu lösen; im zweiten Teil geht es um die Lösung von Konflikten mit einem entfernten Server (GitHub).

Lokaler Zusammenführungskonflikt

Durch die Schaffung von Konflikten beim Zusammenführen können wir lernen, wie diese Probleme überhaupt entstehen. Wir können dann kreative Wege nutzen, um diese Probleme zu lösen oder sogar zu verhindern, dass sie in Zukunft auftreten. 

Wir werden jetzt ein Git-Repository mit einer einzigen Datei anlegen und unsere erste Übergabe erstellen, um loszulegen. 

  1. Erstelle einen Ordner mit dem Namen datacamp.
  2. Wechsle das Verzeichnis zu DataCamp.
  3. Initialisiere Git.
  4. Erstelle eine README.md Datei mit dem angegebenen Titel.
  5. Übertrage die Änderungen in einer Datei.
mkdir datacamp
cd datacamp
git init
echo "# How to Resolve Git Merge Conflict" > README.md
git add README.md
git commit -m "first commit"

>>> [main (root-commit) 8199ea2] first commit
>>>  1 file changed, 1 insertion(+)
>>> create mode 100644 README.md

Als Nächstes erstellen wir einen neuen Zweig readme und ändern den Titel von "...Git Merge..." in "...Git...". Füge die Datei hinzu und erstelle den Commit mit dem Argument -am.

git checkout -b readme
echo "# How to Resolve Git Conflict" > README.md
git commit -am "new branch conflict added"

>>> [readme 155f694] new branch conflict added
>>> 1 file changed, 1 insertion(+), 1 deletion(-)

Gehe zurück zum Hauptzweig und füge mit >> eine neue Zeile in die Datei README.md ein. Indem wir die Änderungen gespeichert und Commits erstellt haben, haben wir erfolgreich einen Konflikt zwischen zwei Versionen derselben Datei erzeugt. 

git checkout main
echo "New change in base branch" >> README.md
git commit -am " a line added to base branch Readme file"

>>> [main f1f1874]  a line added to base branch Readme file
>>> 1 file changed, 1 insertion(+)

Wie wir sehen können, hat Git beim Zusammenführen des Readme-Zweigs eine Meldung ausgegeben, die besagt, dass das automatische Zusammenführen fehlgeschlagen ist und wir die Änderungen manuell vornehmen und dann das Ergebnis übertragen müssen. 

git merge readme

>>> Auto-merging README.md
>>> CONFLICT (content): Merge conflict in README.md
>>> Automatic merge failed; fix conflicts and then commit the result.

Wir werden das Problem manuell beheben, indem wir die Datei im Notepad öffnen und bearbeiten. Das Bild unten zeigt den Pfeil mit HEAD, einen Teiler und einen anderen Richtungspfeil mit einem Readme. Der HEAD-Teil zeigt die bestehenden Änderungen im Hauptzweig an, und der readme-Teil ist der Zweig, den wir zusammenführen wollen. 

Manuelles Auflösen eines ZusammenführungskonfliktsManuelles Auflösen eines Zusammenführungskonflikts

Um das Problem zu lösen, entfernen wir den Readme-Zweig, die Pfeile und die Trennlinie. Die endgültige Version der Datei sollte sauber aussehen, wie unten gezeigt. 

Konflikt beigelegt 

Nachdem wir die Datei hinzugefügt und einen Commit erstellt haben, wird der Merge-Konflikt aufgelöst. Das ist die häufigste und einfachste Art, Probleme zu lösen. Du kannst auch eine integrierte Entwicklungsumgebung (IDE) verwenden, um Probleme schneller zu lösen.

git commit -am "conflict resolved in file README.md"
>>> [main 9994a29] conflict resolved in file README.md

Konflikt bei der Fernzusammenführung

Um Remote-Merge-Konflikte zu erstellen und aufzulösen, müssen wir ein neues Repository auf GitHub erstellen.

Ein neues Repository auf GitHub anlegen

Ein neues Repository auf GitHub anlegen

Als Nächstes fügst du den Remote-Namen (Origin) mit Adresse zum Repository hinzu und pusht alle Änderungen aus dem lokalen Repository mit Upstream in den Remote-Hauptzweig.

git remote add origin https://github.com/kingabzpro/DataCamp-Git-Merge-Guide.git
git push --set-upstream origin main


>>> Enumerating objects: 12, done.
>>> Counting objects: 100% (12/12), done.
>>> Delta compression using up to 4 threads
>>> Compressing objects: 100% (6/6), done.
>>> Writing objects: 100% (12/12), 998 bytes | 499.00 KiB/s, done.
>>> Total 12 (delta 2), reused 0 (delta 0), pack-reused 0
>>> remote: Resolving deltas: 100% (2/2), done.
>>> To https://github.com/kingabzpro/DataCamp-Git-Merge-Guide.git
>>>  * [new branch]      main -> main
>>> branch 'main' set up to track 'origin/main'.

Um einen Konflikt zu erzeugen, müssen wir Änderungen in der entfernten und der lokalen README.md Datei vornehmen. Du kannst den GitHub-Dateieditor verwenden, um "...Git-Merge..." in "...Sit-Merge..." zu ändern und dann die Änderungen zu übertragen. 

Änderungen im GitHub-Editor vornehmen

Änderungen im GitHub-Editor vornehmen

Ändere dann im lokalen Repository die Datei README.md, um nur einen einfachen Titel hinzuzufügen, und übertrage die Änderungen. 

echo "# How to Resolve Merge Conflicts in Git Tutorial" > README.md
git commit -am "local branch changes in README.md"

>>> [main c677a13] local branch changes in README.md
>>>  1 file changed, 1 insertion(+), 4 deletions(-)

Zum Schluss pushst du die Änderungen auf den entfernten Server. Beachte, dass Git den Fehler mit Hinweisen zur Behebung des Problems gemeldet hat. 

git push


>>> To https://github.com/kingabzpro/DataCamp-Git-Merge-Guide.git
>>>  ! [rejected]        main -> main (fetch first)
>>> error: failed to push some refs to 'https://github.com/kingabzpro/DataCamp-Git-Merge-Guide.git'
>>> hint: Updates were rejected because the remote contains work that you do
>>> hint: not have locally. This is usually caused by another repository pushing
>>> hint: to the same ref. You may want to first integrate the remote changes
>>> hint: (e.g., 'git pull ...') before pushing again.
>>> hint: See the 'Note about fast-forwards' in 'git push --help' for details.

Wir folgen dem einfachsten Tipp, der darin besteht, die Datei vor dem Pushen vom Remote-Server zu holen. 

Das Ziehen der Datei ist aufgrund eines Merge-Konflikts in der Datei README.md fehlgeschlagen. Wir könnten das Problem manuell mit Notepad beheben, aber dieses Mal werden wir ein visuelles Tool verwenden, das uns bei diesem Prozess hilft. 

git pull


>>> remote: Enumerating objects: 5, done.
>>> remote: Counting objects: 100% (5/5), done.
>>> remote: Compressing objects: 100% (2/2), done.
>>> remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
>>> Unpacking objects: 100% (3/3), 681 bytes | 75.00 KiB/s, done.
>>> From https://github.com/kingabzpro/DataCamp-Git-Merge-Guide
>>>    aaf149d..49b7d14  main       -> origin/main
>>> Auto-merging README.md
>>> CONFLICT (content): Merge conflict in README.md
>>> Automatic merge failed; fix conflicts and then commit the result.

Das Zusammenführungswerkzeug Meld erkennt konfliktbehaftete Dateien und zeigt sie in der Meld-GUI-Anwendung an.   

git mergetool

>>> Merging:
>>> README.md

>>> Normal merge conflict for 'README.md':
>>>   {local}: modified file
>>>   {remote}: modified file

Es gibt drei Spalten: README_LOCAL_473.md, README.md, und README_LOCAL_473.md. Wenn du der Meinung bist, dass die Remote-Änderungen gültig sind, dann klicke auf den schwarzen Pfeil in der Remote-Spalte; und wenn du möchtest, dass die lokalen Änderungen bestehen bleiben, dann klicke auf den schwarzen Pfeil in der lokalen Spalte. So einfach ist das. 

Git: Konflikt mit mergetool Meld aufgelöst

Konflikt mit dem Zusammenführungswerkzeug Meld aufgelöst

Nachdem du die Änderungen vorgenommen hast, speicherst du die Datei und bestätigst sie. Wie du siehst, führt das Verschieben einer Datei auf einen entfernten Server nicht zu einem Merge-Konflikt-Fehler.

git commit -am "remote main branch conflict resolved"
git push

>>> Enumerating objects: 16, done.
>>> Counting objects: 100% (16/16), done.
>>> Delta compression using up to 4 threads
>>> Compressing objects: 100% (6/6), done.
>>> Writing objects: 100% (10/10), 1.08 KiB | 550.00 KiB/s, done.
>>> Total 10 (delta 2), reused 0 (delta 0), pack-reused 0
>>> remote: Resolving deltas: 100% (2/2), completed with 1 local object.
>>> To https://github.com/kingabzpro/DataCamp-Git-Merge-Guide.git
>>>    49b7d14..8f5c3aa  main -> main

Wir haben sowohl lokale als auch entfernte Zusammenführungskonflikte erfolgreich aufgelöst. Mit diesen Konflikten haben Datenwissenschaftler und Ingenieure für maschinelles Lernen täglich zu tun. Um deine Git-Kenntnisse zu verbessern, besuche einen Kurs zur Einführung in Git

Fazit

Das Auflösen von Git-Merge-Konflikten ist eine komplexe und höchst riskante Aufgabe, da du die Software durch das Zusammenführen von fehlerhaftem Code zerstören kannst. Merge-Tools bieten eine benutzerfreundliche Umgebung mit einer sichereren Methode, um Merge-Konflikte zu erkennen und aufzulösen. In diesem Lernprogramm haben wir gelernt, warum Git-Konflikte auftreten und wie man sie löst. Wir haben auch verschiedene Merge- und Konflikttypen, nützliche Git-Befehle und visuelle Werkzeuge behandelt. Im letzten Abschnitt haben wir einen Merge-Konflikt erzeugt und ihn in einem lokalen und einem entfernten Repository aufgelöst. 

Wenn du neu bei Git bist und lernen willst, wie es funktioniert, dann lies: Einführung in Git und GitHub Tutorial

Lass dich für deine Traumrolle als Data Engineer zertifizieren

Unsere Zertifizierungsprogramme helfen dir, dich von anderen abzuheben und potenziellen Arbeitgebern zu beweisen, dass deine Fähigkeiten für den Job geeignet sind.

Hol dir deine Zertifizierung
Timeline mobile.png

Abid Ali Awan's photo
Author
Abid Ali Awan
LinkedIn
Twitter

Als zertifizierter Data Scientist ist es meine Leidenschaft, modernste Technologien zu nutzen, um innovative Machine Learning-Anwendungen zu entwickeln. Mit meinem fundierten Hintergrund in den Bereichen Spracherkennung, Datenanalyse und Reporting, MLOps, KI und NLP habe ich meine Fähigkeiten bei der Entwicklung intelligenter Systeme verfeinert, die wirklich etwas bewirken können. Neben meinem technischen Fachwissen bin ich auch ein geschickter Kommunikator mit dem Talent, komplexe Konzepte in eine klare und prägnante Sprache zu fassen. Das hat dazu geführt, dass ich ein gefragter Blogger zum Thema Datenwissenschaft geworden bin und meine Erkenntnisse und Erfahrungen mit einer wachsenden Gemeinschaft von Datenexperten teile. Zurzeit konzentriere ich mich auf die Erstellung und Bearbeitung von Inhalten und arbeite mit großen Sprachmodellen, um aussagekräftige und ansprechende Inhalte zu entwickeln, die sowohl Unternehmen als auch Privatpersonen helfen, das Beste aus ihren Daten zu machen.

FAQs

Was sind die besten Methoden, um Konflikte beim Zusammenführen mit Git zu vermeiden?

Um das Risiko von Konflikten zu verringern:

  • Ziehe immer die letzten Änderungen (git pull origin main), bevor du mit neuer Arbeit beginnst.
  • Kommuniziere mit deinem Team, um zu vermeiden, dass es an denselben Codezeilen arbeitet.
  • Mache lieber kleine, häufige Übertragungen als große, komplexe.
  • Verwende Feature-Branches, anstatt direkt auf main zu committen.
  • Führe git diff vor dem Zusammenführen aus, um potenzielle Konflikte frühzeitig zu erkennen.

Kann ich Zusammenführungskonflikte auch ohne Terminal lösen?

Ja! Viele GUI-basierte Git-Tools machen die Konfliktlösung einfacher:

  • VS-Code: Hebt Konflikte mit den Optionen "Eingehend akzeptieren" und "Aktuell akzeptieren" hervor.
  • GitKraken: Bietet eine visuelle Schnittstelle, um Konflikte interaktiv zu lösen.
  • Meld / Beyond Compare: Zusammenführungswerkzeuge, die helfen, Unterschiede visuell zu vergleichen und aufzulösen. Führe git mergetool aus, um ein konfiguriertes visuelles Werkzeug zu verwenden.

Warum bekomme ich immer wieder Konflikte beim Zusammenführen, selbst wenn ich sie gelöst habe?

Mögliche Gründe sind:

  • Du hast vergessen, die aufgelösten Dateien bereitzustellen (git add) und zu übertragen (git commit -m "Resolved conflict").
  • Ein anderer Teamkollege hat neue, widersprüchliche Änderungen vorgenommen, nachdem du deine eigenen gelöst hattest. Versuche es mit git pull --rebase.
  • Du hast deine beschlossenen Änderungen nicht gepusht, bevor du sie wieder zusammengeführt hast. Führe immer git push aus, nachdem du Konflikte gelöst hast.

Was soll ich tun, wenn ich einen Zusammenschluss versehentlich abbreche (git merge --abort)?

Wenn du einen Zusammenschluss abgebrochen hast, es aber noch einmal versuchen willst, kannst du das tun:

  • Führe einfach den Zusammenführungsbefehl erneut aus (git merge ).
  • Verwende git reflog, um den vorherigen Zustand vor dem Abbruch zu überprüfen und ihn bei Bedarf wiederherzustellen.

Wie kann ich einen Fehler bei der Lösung eines Zusammenführungskonflikts rückgängig machen?

Wenn du einen Fehler bei der Konfliktlösung gemacht hast:

  • Führe git reset --hard HEAD aus, um alle Änderungen zu verwerfen und neu zu starten.
  • Verwende git checkout -- , um bestimmte Dateien in ihren ursprünglichen Zustand zurückzusetzen.
  • Wenn du den Fehler bereits begangen hast, kannst du mit git revert einen neuen Commit erstellen und die Änderungen rückgängig machen.

Wie löse ich einen Merge-Konflikt in Binärdateien?

Git kann Binärdateien (z. B. Bilder, PDFs) nicht automatisch zusammenführen. Zum Auflösen:

  • Wähle manuell aus, welche Version du behalten und die Datei ersetzen willst.
  • Verwende git checkout --theirs oder git checkout --ours , um eine Version zu behalten.
  • Übertrage die aufgelöste Datei (git add && git commit -m "Resolved binary file conflict").

Was ist der Unterschied zwischen git merge --abort und git reset --merge?

  • git merge --abort: Macht eine Zusammenführung sicher rückgängig und setzt den Zweig in den Zustand vor der Zusammenführung zurück.
  • git reset --merge: Ähnlich, aber es behält die Staged Files bei und ist nützlicher, wenn du bestimmte Änderungen behalten willst.

Wie löse ich einen Merge-Konflikt beim Pushen auf GitHub?

Wenn git push mit einem Merge-Konflikt-Fehler fehlschlägt, versuche Folgendes:

  • Ziehe die letzten Änderungen: git pull origin main --rebase
  • Löse Konflikte in deiner Filiale manuell.
  • Stelle die aufgelösten Dateien ein und übertrage sie:
git add 
git commit -m "Resolved merge conflict"
  • Drücke noch einmal: git push origin main

Was ist ein Rebase-Konflikt und wie kann ich ihn lösen?

Beim Ausführen von git rebase tritt ein Rebase-Konflikt auf und die Änderungen können nicht sauber übernommen werden. Zum Reparieren:

  • Löse die Konflikte manuell auf und führe dann git rebase --continue aus.
  • Wenn du die Umbasierung abbrechen willst, benutze git rebase --abort.
  • Verwende git rebase --skip, wenn du den konfliktbehafteten Commit ignorieren willst.

Kann ich mit den Git-Einstellungen Zweige ohne Konflikte zusammenführen?

Git hat eine Auto-Merge-Strategie, die manchmal hilft:

  • Verwende git merge -X theirs , um die Änderungen des anderen Zweigs immer zu akzeptieren.
  • Verwende git merge -X ours , um die Änderungen in deinem Zweig immer zu behalten. Dies ist jedoch nicht narrensicher und sollte mit Bedacht eingesetzt werden.
Themen

Lerne mit diesen Kursen mehr über Git!

Kurs

Introduction to GitHub Concepts

2 hr
25K
Learn how to use GitHub's various features, navigate the interface and perform everyday collaborative tasks.
Siehe DetailsRight Arrow
Kurs starten
Mehr anzeigenRight Arrow
Verwandt

Der Blog

Lehrer/innen und Schüler/innen erhalten das Premium DataCamp kostenlos für ihre gesamte akademische Laufbahn

Keine Hacks, keine Tricks. Schüler/innen und Lehrer/innen, lest weiter, um zu erfahren, wie ihr die Datenerziehung, die euch zusteht, kostenlos bekommen könnt.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

4 Min.

Der Blog

Q2 2023 DataCamp Donates Digest

DataCamp Donates hat im zweiten Quartal 2023 über 20.000 Stipendien an unsere gemeinnützigen Partner vergeben. Erfahre, wie fleißige benachteiligte Lernende diese Chancen in lebensverändernde berufliche Erfolge verwandelt haben.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

Der Blog

Die 20 besten Snowflake-Interview-Fragen für alle Niveaus

Bist du gerade auf der Suche nach einem Job, der Snowflake nutzt? Bereite dich mit diesen 20 besten Snowflake-Interview-Fragen vor, damit du den Job bekommst!
Nisha Arya Ahmed's photo

Nisha Arya Ahmed

15 Min.

Der Blog

Top 30 Generative KI Interview Fragen und Antworten für 2024

Dieser Blog bietet eine umfassende Sammlung von Fragen und Antworten zu generativen KI-Interviews, die von grundlegenden Konzepten bis hin zu fortgeschrittenen Themen reichen.
Hesam Sheikh Hassani's photo

Hesam Sheikh Hassani

15 Min.

Der Blog

2022-2023 DataCamp Classrooms Jahresbericht

Zu Beginn des neuen Schuljahres ist DataCamp Classrooms motivierter denn je, das Lernen mit Daten zu demokratisieren. In den letzten 12 Monaten sind über 7.650 neue Klassenzimmer hinzugekommen.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

8 Min.

Mehr anzeigenMehr anzeigen