850 Stimmen

Wie ignoriere ich einen Fehler bei 'git pull', der besagt, dass meine lokalen Änderungen durch den Merge überschrieben würden?

Wie ignoriere ich die folgende Fehlermeldung bei Git pull?

Ihre lokalen Änderungen an den folgenden Dateien würden durch den Merge überschrieben

Was ist, wenn ich sie überschreiben möchte?

Ich habe Dinge wie git pull -f ausprobiert, aber nichts funktioniert.

Um es klar zu sagen, ich möchte nur bestimmte Änderungen überschreiben, nicht alles.

20voto

Kasyful Anwar Punkte 245

Versuche dies

git fetch --all 

git reset --hard origin/master

git pull origin master

Es funktioniert für mich, um ein Force Pull durchzuführen

15voto

Khemraj Sharma Punkte 52006

git stash save --keep-index hat bei mir nicht funktioniert.

Der folgende Befehl hat wie erwartet funktioniert.

git reset --hard
git pull

Es überschreibt alle lokalen Änderungen, wenn du sie nicht benötigst.

12voto

kenorb Punkte 134883

Im aktuellen Git können Sie -r/--rebase dem pull-Befehl hinzufügen, um Ihren aktuellen Branch oben auf den Upstream-Branch neu zu basieren, nachdem Sie ihn abgerufen haben. Die Warnung sollte verschwinden, aber es besteht das Risiko, dass Sie Konflikte haben, die Sie lösen müssen.


Alternativ können Sie einen anderen Branch mit Zwang auschecken und dann wieder zum master zurückkehren, z. B.:

git checkout origin/master -f
git checkout master -f

Dann ziehen Sie es wie gewohnt erneut:

git pull origin master

Mit dieser Methode sparen Sie Zeit beim Verstauen (git stash) und potenzielle Berechtigungsprobleme, beim Zurücksetzen von Dateien (git reset HEAD --hard), beim Entfernen von Dateien (git clean -fd), usw. Außerdem ist das obige einfacher zu merken.

10voto

STK Punkte 167

Hier ist meine Strategie, um das Problem zu lösen.

Problemstellung

Wir müssen in mehr als 10 Dateien Änderungen vornehmen. Wir haben versucht PULL (git pull origin master), aber Git hat geschrien:

Fehler: Ihre lokalen Änderungen an den folgenden Dateien würden durch den Zusammenführung überschrieben: Bitte, bestätigen Sie Ihre Änderungen oder legen Sie sie beiseite, bevor Sie zusammenführen können.

Wir haben versucht, commit auszuführen und dann pull, aber auch das hat nicht funktioniert.

Lösung

Eigentlich befanden wir uns im dirty Zustand, weil die Dateien im "Staging-Bereich" a.k.a "Index-Bereich" und einige im "Head-Bereich" a.k.a "lokales Git-Verzeichnis" waren. Und wir wollten die Änderungen vom Server ziehen.

Überprüfen Sie diesen Link für Informationen zu den verschiedenen Git-Stufen auf klare Weise: GIT Stages

Wir haben die folgenden Schritte befolgt

  • git stash (das hat unser Arbeitsverzeichnis sauber gemacht. Ihre Änderungen werden von Git auf dem Stapel gespeichert).
  • git pull origin master (Holen Sie sich die Änderungen vom Server)
  • git stash apply (Alle Änderungen vom Stapel angewendet)
  • git commit -m 'Nachricht' (Die Änderungen bestätigt)
  • git push origin master (Die Änderungen zum Server gepusht)
  • git stash drop (Den Stapel fallen gelassen)

Verstehen wir wann und warum Sie Verstauen benötigen

Wenn Sie im dirty Zustand sind, bedeutet das, dass Sie Änderungen in Ihren Dateien vornehmen und dann aus irgendeinem Grund gezwungen sind, aufgrund irgendwelcher dringender Arbeit pull oder switch zu einem anderen Branch zu wechseln, können Sie zu diesem Zeitpunkt nicht pullen oder wechseln, bis Sie Ihre Änderung bestätigen. Der stash -Befehl ist hier als helfende Hand da.

Aus dem Buch ProGIT, 2. Auflage:

Oft, wenn Sie an einem Teil Ihres Projekts gearbeitet haben, sind die Dinge in einem chaotischen Zustand und Sie möchten für eine Weile in einen anderen Branch wechseln, um an etwas anderem zu arbeiten. Das Problem ist, dass Sie keine halbfertige Arbeit bestätigen möchten, nur um später zu diesem Punkt zurückzukehren. Die Antwort auf dieses Problem ist der git stash Befehl. Das Verstauen nimmt den schmutzigen Zustand Ihres Arbeitsverzeichnisses - das heißt, Ihre modifizierten verfolgten Dateien und gestageten Änderungen - und speichert es auf einem Stapel unvollendeter Änderungen, die Sie jederzeit erneut anwenden können.

10voto

Yamen Ashraf Punkte 2191

git reset --hard && git clean -df

Vorsicht: Dadurch werden alle nicht verfolgten Dateien zurückgesetzt und gelöscht.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X