Synchronisierung Der Repositories
Swipe um das Menü anzuzeigen
Wie im vorherigen Kapitel erwähnt, müssen wir unseren lokalen Branch mit dem Remote-Repository synchronisieren. Dafür führen wir den Befehl git pull aus:
git pull
Beim Ausführen des Befehls git pull hat Git Updates abgerufen, aber festgestellt, dass sich unser lokaler und der Remote-Branch auseinanderentwickelt haben. Das bedeutet, dass auf beiden Branches Änderungen vorhanden sind, die abgeglichen werden müssen. Git konnte nicht fortfahren, da festgelegt werden muss, wie mit diesen Unterschieden umgegangen werden soll. Daher setzen wir die Option merge und führen den Befehl git pull erneut aus:
git config pull.rebase false
Die Rebase-Operation wird später in diesem Kurs behandelt.
git pull
Git hat versucht, die lokalen und entfernten Änderungen an README.md automatisch zusammenzuführen, ist jedoch auf einen Merge-Konflikt gestoßen. Werfen wir einen Blick auf den Commit-Baum, der anzeigt, wo die Abweichungen und Konflikte aufgetreten sind:
git log --graph --oneline --all
Konfliktlösung
Wie Sie sehen können, teilen sich unser aktueller lokaler Commit und der Commit im entfernten main-Branch einen gemeinsamen Vorgänger, aber sie weichen voneinander ab, was zum Merge-Konflikt führt, den wir lösen müssen. Dazu öffnen wir die Datei README.md im Vim-Editor:
vim README.md
Zur Behebung dieses Konflikts in den Einfügemodus wechseln, indem i gedrückt wird, die Konfliktmarkierungen entfernen und diese Änderungen wie folgt zusammenführen:
Als Nächstes sollte die Escape-Taste gedrückt, :wq eingegeben und anschließend die Enter-Taste betätigt werden, um die Änderungen zu speichern und Vim zu verlassen. Um den Merge abzuschließen, muss die Datei README.md mit den jeweiligen Befehlen zum Staging-Bereich hinzugefügt und anschließend committed werden:
git add README.md
git commit
Nach Ausführung des Befehls git commit öffnet sich der Standard-Texteditor (meistens Vim). Es kann entweder die Standard-Commit-Nachricht übernommen und Vim wie zuvor verlassen werden, oder die Nachricht kann bearbeitet und anschließend beendet werden.
Abschließend können wir nun sicher den Befehl git push ausführen und überprüfen, ob der Three-Way-Merge erfolgreich war, indem wir den Commit-Baum anzeigen:
git log --graph --oneline --all
Zusammenfassung der Schritte in diesen beiden Kapiteln:
-
Simulation der Zusammenarbeit durch Änderungen sowohl lokal als auch remote an der Datei
README.md; -
Zunächst wurde eine Änderung direkt im Remote-Repository committet, anschließend eine andere Änderung lokal vorgenommen;
-
Beim Versuch, die lokalen Änderungen zu pushen, trat ein Konflikt auf, da das Remote-Repository neue Updates enthielt;
-
Zur Lösung wurde ein Pull der Änderungen aus dem Remote-Repository durchgeführt, was zu einem Merge-Konflikt führte;
-
Anschließend wurde der Konflikt manuell gelöst in der Datei
README.mdmit dem Vim-Editor, die gelösten Änderungen committet und die finalen Updates erfolgreich ins Remote-Repository gepusht.
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen