Pull Überschreiben in Git erzwingen
- Force-Pull in Git
- Beibehalten lokaler Commits beim Pullen in Git
- Beibehalten lokaler Änderungen beim Pullen in Git
Git ist heute das beliebteste und anspruchsvollste Versionskontrollsystem. Die Benutzeroberflächen für Git sind ähnlich wie bei anderen Versionskontrollsystemen. Wir können uns anmelden, ein Repository klonen und Commits vornehmen.
Git weist jedoch einige bemerkenswerte Unterschiede auf, die es komplizierter als andere Systeme machen.
Git wird verteilt. Jeder Benutzer hat sein Repository, anstatt dass alle Repositorys an einem einzigen zentralen Ort gespeichert werden. Jeder muss eine Verbindung zu einem anderen Repository herstellen, um es zu verwenden. Es ist ein wenig nervig, bedeutet aber auch, dass wir an verschiedenen Orten an denselben Dateien arbeiten können. Wir können an mehreren Orten an demselben Projekt arbeiten und die Änderungen werden synchronisiert.
Wir sind hier, um zu verstehen, wie man alle Änderungen im funktionierenden aktuellen lokalen Zweig mit Nachdruck durchführt. In der Tat ist es uns vielleicht passiert, dass wir ein altes Git-Repository haben, das nicht mit dem Remote-Repository mit den neuesten Änderungen synchronisiert wurde, und wir können auch die neuesten Remote-Commits haben oder nicht, und jetzt wollen wir die neuesten abrufen Remote-Änderungen, und wir kümmern uns nicht einmal um die lokalen Änderungen im aktuellen Repository, was also für dieses Szenario zu tun ist. Die Lösung für dieses Problem finden Sie unten.
Force-Pull in Git
Beim Namen des Befehls pull
denken wir vielleicht, dass wir hier den Befehl git pull
verwenden können, aber es ist nicht die ideale Art, den Pull-Befehl in Git zu verwenden. Es gibt also zwei Möglichkeiten, mit dieser Situation umzugehen, eine besteht darin, das aktuelle lokale Repository zu löschen und erneut einen Klon desselben Repositorys zu erstellen, aber der Nachteil ist, dass wir unsere nicht nachverfolgten Dateien verlieren, die bereits in unserem aktuellen Repository vorhanden sind.
Zuerst führen wir fetch --all
wie folgt aus.
git fetch --all
Hier lädt der Befehl git fetch
das Neueste von der Ferne herunter, ohne etwas zusammenzuführen oder umzubasieren. Dann, nachdem wir fetch wie oben ausgeführt haben, werden wir, wenn wir uns im master
-Zweig befinden, den folgenden Befehl zum Zurücksetzen ausführen:
git reset --hard origin/master
Durch Ausführen des obigen Befehls git reset
wird der Master-Branch auf das zurückgesetzt, was wir gerade abgerufen haben, oder wenn wir uns in einem anderen Branch befinden, verwenden wir den Branch-Namen wie folgt.
git reset --hard origin/<branch_name>
Die obige Option --hard
ändert alle Dateien in unserem Arbeitsbaum, damit sie mit den Dateien im origin/master
-Zweig übereinstimmen.
Beibehalten lokaler Commits beim Pullen in Git
Wenn wir lokale Commits behalten wollen, müssen wir einen lokalen Zweig von dem Zweig machen, auf dem wir uns befinden, bevor wir den reset
-Befehl ausführen.
git checkout master
git branch new-backup-branch
git fetch --all
git reset --hard origin/master
Die oben genannten Befehle sind nur für erfahrene Benutzer gedacht, die genau wissen, was sie tun. Die Warnung gilt für die oben genannten Befehle: Verwenden Sie die oben genannten Befehle nur mit Vorsicht und stellen Sie sicher, dass Sie wissen, was ihre Aktionen bedeuten, bevor Sie sie anwenden!
Beibehalten lokaler Änderungen beim Pullen in Git
Sowohl nicht festgeschriebene als auch inszenierte Änderungen gehen verloren, wenn wir den Befehl reset
ausführen. Was ist also die Lösung, um diese Änderungen im lokalen Repository beizubehalten?
Wenn wir diese Änderungen beibehalten möchten, verwenden wir den Befehl stash
, bevor wir den Befehl reset ausführen, und nachdem wir den Befehl pull
ausgeführt haben, können wir die gestasheden Änderungen über unseren Änderungen platzieren
. Zu diesem Zweck führen wir den folgenden Befehl aus:
git stash
Und nach Abschluss des Zurücksetzens und Pullens erhalten wir, wenn wir diese zwischengespeicherten Änderungen erneut anwenden möchten, auf diese Weise unsere lokalen Änderungen wieder im Arbeitsverzeichnis. Wir werden den folgenden Befehl verwenden, um unsere Änderungen zurückzubekommen:
git stash pop
Abdul is a software engineer with an architect background and a passion for full-stack web development with eight years of professional experience in analysis, design, development, implementation, performance tuning, and implementation of business applications.
LinkedIn