Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Synchronisierung Der Repositories | Fortgeschrittenere Workflows
GitHub-Grundlagen

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
Pull-Versuch

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
Note
Hinweis

Die Rebase-Operation wird später in diesem Kurs behandelt.

git pull
Merge-Konflikt

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
Commit-Baum

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
Konflikte in Vim

Zur Behebung dieses Konflikts in den Einfügemodus wechseln, indem i gedrückt wird, die Konfliktmarkierungen entfernen und diese Änderungen wie folgt zusammenführen:

Gelöster Konflikt

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
Note
Hinweis

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.

Zusammengeführte Datei committen

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
Commit-Baum

Zusammenfassung der Schritte in diesen beiden Kapiteln:

  1. Simulation der Zusammenarbeit durch Änderungen sowohl lokal als auch remote an der Datei README.md;

  2. Zunächst wurde eine Änderung direkt im Remote-Repository committet, anschließend eine andere Änderung lokal vorgenommen;

  3. Beim Versuch, die lokalen Änderungen zu pushen, trat ein Konflikt auf, da das Remote-Repository neue Updates enthielt;

  4. Zur Lösung wurde ein Pull der Änderungen aus dem Remote-Repository durchgeführt, was zu einem Merge-Konflikt führte;

  5. Anschließend wurde der Konflikt manuell gelöst in der Datei README.md mit dem Vim-Editor, die gelösten Änderungen committet und die finalen Updates erfolgreich ins Remote-Repository gepusht.

question mark

Welcher Befehl stellt Git so ein, dass beim git pull Merge (kein Rebase) verwendet wird?

Wählen Sie die richtige Antwort aus

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 3. Kapitel 2

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

Abschnitt 3. Kapitel 2
some-alt