Kursinhalt
GitHub-Grundlagen
GitHub-Grundlagen
Synchronisieren der Repositories
Wie im vorherigen Kapitel erwähnt, müssen wir unseren lokalen Branch mit dem Remote-Repository synchronisieren. Dazu sollten wir den Befehl git pull
ausführen:
Als wir den Befehl git pull
ausführten, hat Git Updates abgerufen, aber festgestellt, dass unsere lokalen und entfernten Branches auseinandergegangen sind, was bedeutet, dass es auf beiden Branches Änderungen gibt, die abgestimmt werden müssen. Git konnte nicht fortfahren, da es wissen muss, wie mit diesen Unterschieden umzugehen ist. Lassen Sie uns also die merge-Option festlegen und den Befehl git pull
erneut ausführen:
Git hat versucht, die lokalen und entfernten Änderungen an README.md
automatisch zu mergen, stieß jedoch auf einen Merge-Konflikt. Werfen wir einen Blick auf den Commit-Baum, der anzeigt, wo die Abweichungen und Konflikte aufgetreten sind:
Konflikt lösen
Wie Sie sehen können, teilen unser aktueller lokaler Commit und der Commit im Remote-main
-Branch einen gemeinsamen Vorfahren, aber sie weichen voneinander ab, was zu dem Merge-Konflikt führt, den wir lösen müssen. Dazu öffnen wir die Datei README.md
im Vim-Editor:
Was wir tun können, um diesen Konflikt zu lösen, ist den Einfügemodus durch Drücken von i
zu aktivieren, die Konfliktmarkierungen zu entfernen und diese Änderungen auf folgende Weise zu kombinieren:
Als nächstes sollten Sie die Escape-Taste drücken, :wq
eingeben und die Enter-Taste drücken, um die Änderungen zu speichern und Vim zu verlassen. Um den Merge abzuschließen, muss die Datei README.md
mit den entsprechenden Befehlen hinzugefügt und dann committed werden:
Schließlich können wir den Befehl git push
sicher ausführen und überprüfen, ob der Drei-Wege-Merge erfolgreich war, indem wir den Commit-Baum anzeigen:
Lassen Sie uns aufschlüsseln, was wir in diesen beiden Kapiteln gemacht haben:
-
Wir haben die Zusammenarbeit simuliert, indem wir sowohl lokal als auch remote Änderungen an der Datei
README.md
vorgenommen haben; -
Wir haben zuerst eine Änderung direkt im Remote-Repository festgeschrieben und dann eine andere Änderung lokal vorgenommen;
-
Als wir versuchten, unsere lokalen Änderungen zu pushen, stießen wir auf einen Konflikt, weil das Remote-Repository neue Updates hatte;
-
Um dies zu lösen, haben wir die Änderungen vom Remote-Repository gezogen, was zu einem Merge-Konflikt führte;
-
Wir haben dann den Konflikt manuell im
README.md
-File mit dem Vim-Editor gelöst, die gelösten Änderungen festgeschrieben und die finalen Updates erfolgreich zum Remote-Repository gepusht.
Danke für Ihr Feedback!