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.

81voto

Suneel Kumar Punkte 5185

Sie können entweder Ihre Änderungen vor dem Zusammenführen sichern oder sie zwischenspeichern:

  1. git stash save
  2. git merge origin/master
  3. git stash pop

61voto

pabloasc Punkte 763

Wenn Sie Ihre lokalen Änderungen an einer Datei verwerfen möchten, können Sie Folgendes tun:

git checkout -- 

Dann können Sie die Datei(en) einfach mit der neuesten Version überschreiben, indem Sie Folgendes tun:

git pull

50voto

Eugen Konkov Punkte 18206
git pull --rebase --autostash
  -r, --rebase[=false|true|merges|preserve|interactive]
      Wenn true, wird der aktuelle Branch nach dem Abrufen oben 
      auf dem Upstream-Branch neu basiert. Wenn ein 
      Remote-Tracking-Branch zum Upstream vorhanden ist

  --autostash, --no-autostash
      Bevor der Rebase gestartet wird, werden lokale Änderungen 
      gegebenenfalls beiseite gelegt und der Stash-Eintrag 
      wird nach Abschluss angewendet

Ich weiß nicht, warum das noch nicht beantwortet wurde, aber die Lösung ist, wie Sie sehen können, einfach. Alle Antworten hier schlagen dasselbe vor: Ihre lokalen Änderungen zu löschen/speichern und den Upstream anzuwenden und dann (falls Sie save), Ihre lokalen Änderungen oben anzuwenden.

Was macht git pull --rebase --autostash Schritt für Schritt:

1. Ihre lokalen Änderungen werden durch `--autostash` gespeichert
2. Ihre lokalen Commits werden durch `--rebase` gespeichert
3. Commits vom Upstream werden auf Ihren Branch angewendet
4. Ihre lokalen Commits werden oben auf dem Upstream wiederhergestellt
5. Ihre lokalen Änderungen werden im Arbeitsverzeichnis wiederhergestellt

Mein Fall (wahrscheinlich auch Ihrer):

Ich habe lokale Änderungen (Änderungen im Arbeitsverzeichnis):

Geben Sie hier die Bildbeschreibung ein

Wenn ich versuche, Remote-Änderungen abzurufen, erhalte ich einen Fehler:

Geben Sie hier die Bildbeschreibung ein

Diese Änderungen überschneiden sich nicht mit den lokalen Änderungen:

Geben Sie hier die Bildbeschreibung ein

Also, wenn ich pull --rebase --autostash verwende, werden lokale Änderungen automatisch gespeichert und angewendet, ohne Probleme

Geben Sie hier die Bildbeschreibung ein

Jetzt sind meine lokalen Änderungen etwas niedriger: Geben Sie hier die Bildbeschreibung ein

28voto

Nikhil K R Punkte 647

Wenn Ihr Repository einige Dateien enthält, die aus master entfernt wurden:

  1. git checkout master
  2. git fetch origin
  3. git reset --hard origin/master
  4. git checkout -b newbranch

21voto

Jeremy Holovacs Punkte 21045

Manchmal funktioniert keiner davon. Ärgerlicherweise, wegen der LF-Geschichte denke ich, was funktionieren wird, ist das Löschen der Dateien, dann ziehen. Nicht dass ich diese Lösung empfehle, aber wenn die Datei nicht existiert, wird git Sie nicht nutzlos informieren, dass Ihre Änderungen (die möglicherweise nicht einmal Änderungen sind) überschrieben werden, und wird Sie weitermachen lassen.

Auf eigene Gefahr verwenden.

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