Git Pull erzwingen

Azhar Bashir Khan 6 Februar 2022
Git Pull erzwingen

In diesem Tutorial lernen wir, wie man Änderungen aus dem Remote-Repository zwangsweise in Git zieht.

Manchmal müssen wir die lokalen Änderungen möglicherweise verwerfen und sie durch Aktualisierungen aus dem Remote-Repository in einer kollaborativen Entwicklungsumgebung ersetzen.

Wir verwenden den Befehl git pull, um die Änderungen aus dem Remote-Repository in den lokalen Zweig im lokalen Repository zu holen.

Der Befehl git pull ist nur erfolgreich, wenn die Änderungen im lokalen Zweig hinter den Änderungen im Remote-Repository liegen.

Wenn die Änderungen des lokalen Zweigs und des entfernten Repositorys voneinander abweichen und wir die lokalen Änderungen verwerfen möchten, müssen wir einen git pull erzwingen, um die lokalen Änderungen zu überschreiben.

Wir werden dies nun an einem Beispiel erläutern.

Verwenden von git fetch, git reset und git merge, um die Remote-Änderungen in Git mit Gewalt abzurufen

Der Befehl git pull ist keine einzelne Operation. Der Befehl git pull führt den Befehl viz aus. git fetch, um die Daten aus dem entfernten Repository abzurufen, und dann den Befehl git merge, um diese Änderungen in das lokale Repository einzufügen.

Der Befehl git pull führt also die beiden Befehle wie folgt aus.

$ git fetch
$ git merge origin/$CURRENT_BRANCH

Der Befehl git fetch lädt die letzten Änderungen aus dem Remote-Repository herunter. Es führt kein merge oder rebase des lokalen Repositorys durch.

Der oben angegebene Befehl git merge führt die Änderungen aus dem entfernten Repository, angegeben durch den Alias ​​origin, die zu $CURRENT_BRANCH hinzugefügt wurden, die nicht bereits im lokalen Zweig vorhanden sind, im lokalen Repository zusammen.

Daher schlägt der git pull fehl, wenn der lokale Zweig im lokalen Repository von dem Zweig im entfernten Repository abweicht.

Möglicherweise haben wir einige lokale Änderungen an den Dateien im Arbeitsbaum des lokalen Zweigs vorgenommen. Dies führt also dazu, dass der git pull fehlschlägt.

Wir können uns jetzt entscheiden, die lokalen Änderungen zugunsten der Änderungen im entfernten Repository zu verwerfen.

Daher müssen wir die Änderungen mit Nachdruck ziehen, die die lokalen Änderungen überschreiben.

Wir müssen wie folgt vorgehen, um einen kraftvollen Zug der Remote-Änderungen zu erreichen.

$ git fetch
$ git reset --hard HEAD
$ git merge origin/$CURRENT_BRANCH

Der Befehl git reset mit der Option --hard setzt den Branch auf das zurück, was wir gerade abgerufen haben. Außerdem werden alle lokalen Änderungen an den nachverfolgten Dateien verworfen, und die nicht nachverfolgten Dateien werden gelöscht.

Verwenden Sie dies daher mit Vorsicht, da alle lokalen Änderungen verloren gehen.

Alternativ können wir die lokalen Änderungen speichern, bevor wir die Änderungen abrufen. Wir können die Änderungen mit git stash zusammen mit dem Pull der Änderungen stashen.

Wir können wie folgt vorgehen.

$ git fetch
$ git stash
$ git merge origin/$CURRENT_BRANCH
$ git stash pop

Wenn wir also git stash verwenden, müssen wir keinen git reset des lokalen Zweigs des lokalen Repositorys mehr durchführen.

Wir haben den git stash pop verwendet, um lokale Änderungen aus dem Stash zu bekommen.

Verwandter Artikel - Git Pull