it-swarm.com.de

Wie ignoriere ich einen Fehler bei "git pull", wenn meine lokalen Änderungen durch die Zusammenführung überschrieben werden?

Wie ignoriere ich die folgende Fehlermeldung in Git pull?

Ihre lokalen Änderungen an den folgenden Dateien werden beim Zusammenführen überschrieben

Was ist, wenn ich will überschreibe?

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

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

445
mae

Okay, mit den beiden anderen Antworten habe ich eine direkte Lösung gefunden:

git checkout HEAD^ file/to/overwrite
git pull
262
mae

Wenn Sie alle lokalen Änderungen aus Ihrer Arbeitskopie entfernen möchten, speichern Sie sie einfach:

git stash save --keep-index

Wenn du sie nicht mehr brauchst, kannst du diesen Vorrat jetzt ablegen:

git stash drop

Wenn Sie nur bestimmte Teile Ihrer lokalen Änderungen überschreiben möchten, gibt es zwei Möglichkeiten:

  1. Übernehmen Sie alles, was Sie nicht überschreiben möchten, und verwenden Sie die obige Methode für den Rest.

  2. Verwenden Sie git checkout path/to/file/to/revert für die Änderungen, die Sie überschreiben möchten. Stellen Sie sicher, dass die Datei nicht über git reset HEAD path/to/file/to/revert bereitgestellt wird.

340
Daniel Hilgarth

Dies funktioniert für mich, um alle lokalen Änderungen zu überschreiben und erfordert keine Identität:

git reset --hard
git pull
149
kravits88

Hier ist eine Lösung, die inszenierte Änderungen wegwirft:

git reset file/to/overwrite
git checkout file/to/overwrite
72
Aftershock

Sie können Ihre Änderungen entweder festschreiben, bevor Sie die Zusammenführung durchführen, oder Sie verwahren sie:

  1. git stash save
  2. git merge Origin/master
  3. git stash pop
55
Suneel Kumar

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

git checkout -- <file>

Dann könnten Sie die Datei (en) mit der neuesten Version überschreiben.

git pull
33
pabloasc

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
11
Nikhil K R

Im aktuellen Git können Sie den Befehl -r/--rebase mit dem Befehl pull hinzufügen, um Ihren aktuellen Zweig nach dem Abrufen oberhalb des Upstream-Zweigs zu rebasieren. Die Warnung sollte verschwinden, es besteht jedoch das Risiko, dass Sie Konflikte erhalten, die Sie lösen müssen.


Alternativ können Sie einen anderen Zweig mit Kraft auschecken und dann wieder zu master zurückkehren, z.

git checkout Origin/master -f
git checkout master -f

Dann wieder wie gewohnt ziehen:

git pull Origin master

Mit dieser Methode können Sie Zeit einsparen (git stash) und mögliche Berechtigungsprobleme, das Zurücksetzen von Dateien (git reset HEAD --hard), das Entfernen von Dateien (git clean -fd) usw. Auch das oben genannte ist einfacher zu merken.

8
kenorb

Dieses Problem ist darauf zurückzuführen, dass Sie lokal Änderungen an den Datei (en) vorgenommen haben und die gleiche Datei (en) mit Änderungen im Git-Repository vorhanden sind. Vor dem Pull/Push-Vorgang benötigen Sie lokale Änderungen:

So überschreiben Sie lokale Änderungen einer einzelnen Datei:

git reset file/to/overwrite
git checkout file/to/overwrite

So überschreiben Sie alle lokalen Änderungen (Änderungen in allen Dateien):

git stash
git pull
git stash pop

Dieses Problem kann auch daran liegen, dass Sie sich in einem Zweig befinden, der nicht mit dem Hauptzweig zusammengeführt wird.

7
BSB

Manchmal funktioniert nichts davon. Verblüffenderweise denke ich an das LF -Ding: Löschen Dateien - dann Ziehen. Nicht, dass ich diese Lösung empfehle, aber wenn die Datei nicht existiert, informiert git Sie nicht nutzlos, dass Ihre Änderungen (die möglicherweise nicht einmal Änderungen sind) überschrieben werden und Sie fortfahren können.

Benutzung auf eigene Gefahr.

7
Jeremy Holovacs

Sie können dies zum Überschreiben von Dateien verwenden

git checkout file_to_overwrite
4
Deepika Patel

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

der folgende Befehl funktionierte wie erwartet. 

git reset --hard
git pull

Es überschreibt alle lokalen Änderungen, wenn Sie sie nicht benötigen.

4
Khemraj

Dies funktionierte für mich, um Änderungen auf dem Live-Remote-Server zu verwerfen und aus dem Quellensteuerelement GitHub zu ziehen:

git reset --hard
git pull Origin master
3
Gajen Sunthara

Der beste Weg, um dieses Problem zu lösen, ist:

git checkout -- <path/file_name>

Danach können Sie die Datei wie folgt überschreiben:

git pull Origin master

Wenn Sie bestimmte Änderungen überschreiben möchten, müssen Sie wissen, welche Sie vergessen möchten.

Sie können die Änderungen, die Sie verwerfen möchten, mit git stash --patch selektiv verwahren und dann mit git stash drop den Vorratsspeicher löschen. Sie können dann die Remote-Änderungen einlesen und wie gewohnt zusammenführen.

3
Will Vousden

git reset --hard && git clean -df

Dadurch werden alle nicht aufgespürten Dateien zurückgesetzt und gelöscht.

3
Yamen Ashraf

Wenn Sie Produktionsänderungen auf dem Server beibehalten möchten, fügen Sie einfach ein neues Konfigurationselement zusammen. Die Verarbeitungsmethode lautet wie folgt:

git stash
git pull
git stash pop

Vielleicht führen Sie nicht alle Operationen aus. Sie können wissen, was Sie als Nächstes tun können.

2
YanQing

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

Problemstellung

Wir müssen Änderungen in mehr als 10 Dateien vornehmen. Wir haben PULL (git pull Origin master) ausprobiert, aber Git rief:

fehler: Ihre lokalen Änderungen an den folgenden Dateien werden überschrieben durch Zusammenführen: Bitte machen Sie Ihre Änderungen fest oder bewahren Sie sie auf, bevor Sie verschmelzen.

Wir haben versucht, commit und dann pull auszuführen, aber sie funktionierten auch nicht.

Lösung

Wir befanden uns tatsächlich in der Phase dirty, da sich die Dateien im "Staging-Bereich" a.k.a "Indexbereich" befanden und einige im "Head-Bereich" a.k.a "lokales Git-Verzeichnis". Und wir wollten die Änderungen vom Server übernehmen.

Überprüfen Sie diesen Link auf eindeutige Weise, um Informationen über die verschiedenen Stufen von Git zu erhalten: GIT Stages

Wir sind den folgenden Schritten gefolgt

  • git stash (dadurch wurde unser Arbeitsverzeichnis sauber. Ihre Änderungen werden von Git im Stack gespeichert).
  • git pull Origin master (die Änderungen vom Server übernehmen)
  • git stash apply (Alle Änderungen vom Stack übernommen)
  • git commit -m 'message' (Änderungen übernommen)
  • git Push Origin master (die Änderungen an den Server weitergeleitet)
  • git stash drop (Stapel ablegen)

Lassen Sie uns wissen, wann und warum Sie etwas verstauen müssen

Wenn Sie sich im Zustand dirty befinden, bedeutet dies, dass Sie Änderungen an Ihren Dateien vornehmen und dann aus irgendeinem Grund zu pull oder switch to gezwungen werden Ein weiterer Zweig für etwas sehr dringende Arbeit, also können Sie an diesem Punkt nicht ziehen oder wechseln, bis Sie Ihre Änderung festgeschrieben haben. Der Befehl stash dient hier als helfende Hand.

Aus dem Buch ProGIT, 2. Auflage:

Oft, wenn Sie an einem Teil Ihres Projekts gearbeitet haben, ist alles in ein unordentlicher Zustand, und Sie möchten die Zweige ein wenig wechseln, um daran zu arbeiten etwas anderes. Das Problem ist, dass Sie kein Commit von .__ ausführen möchten. halb erledigte Arbeit, damit Sie später auf diesen Punkt zurückkommen können. Das Antwort auf dieses Problem ist der Befehl git stash. Einlagern nimmt die Dirty-Status Ihres Arbeitsverzeichnisses - das heißt, Ihre geänderte verfolgte Dateien und inszenierte Änderungen - und speichert sie auf einem Stapel unfertiger Dateien Änderungen, die Sie jederzeit erneut anwenden können.

2
STK

Ich hatte einen speziellen Fall: Ich hatte eine Datei mit --assume-unverändert. Es war schwer zu finden, da der Befehl git status keine Änderungen zeigte 

2
Arkadiy

Dies ist mir beim Abzug vom Meister aufgefallen.

So habe ich es mit Visual Studio gehandhabt;

  1. Zuerst habe ich die Rückgängig-Operation für meine Lösung ausgeführt.
  2. Dann habe ich den Git-Pull-Prozess durchgeführt.

Hoffe das hilft!

1
AJ Macapaz

Ich habe eine Datei in meinem Repo ignoriert und als ich git pull upstream master tat, bekam ich den folgenden Fehler:

fehler: Ihre lokalen Änderungen an den folgenden Dateien werden durch die Zusammenführung überschrieben: myfile.js Bitte machen Sie Ihre Änderungen fest oder verwahren Sie sie, bevor Sie sie zusammenführen können. Abbruch

Um das zu beheben, habe ich folgendes getan

git update-index --no-assume-unchanged myfile.js

Ich habe dann git status gemacht und diese Nachricht erhalten

Am Zweigmaster Ihr Zweig steht mit 4 Commits hinter "Origin/Master", und kann vorgespult werden. (Verwenden Sie "git pull", um Ihre lokale Zweigstelle zu aktualisieren.)

Änderungen werden nicht für das Commit bereitgestellt: (Verwenden Sie "git add ...", um zu aktualisieren Was wird festgeschrieben) (verwenden Sie "git checkout - ...", um Änderungen im Arbeitsverzeichnis zu verwerfen.

geändert: myfile.js

keine Änderungen zum Festschreiben hinzugefügt (verwenden Sie "git add" und/oder "git commit -a")

Dann habe ich git checkout myfile.js gefolgt von git pull upstream master. Diesmal war der Git-Pull-Vorgang erfolgreich.

1
Dmitry

Ich habe die selbe Fehlermeldung ausgeführt
: PluginUpdateBefehl von der Befehlszeile des VIM-Editors

"Bitte übertragen Sie Ihre Änderungen oder bewahren Sie sie auf, bevor Sie sie zusammenführen."

1. hat gerade den Ordner entfernt, der die Plugins aus dem

rm -rf ~/.vim/bundle/plugin-folder/

2. und neu installiert es aus der vim Kommandozeile,
: PluginInstall!
weil mein ~/.vimrc die Anweisungen zum Erstellen des Plugins für dieses Ziel enthielt:

 enter image description here

dadurch wurde der richtige Ordner erstellt.
und habe ein neues Paket in den Ordner ~ ./. vim/bundle /Ordner für neu installierte Plugins
Die Zeichen "! " (aufgrund des fehlgeschlagenen Befehls PluginUpdate) wurden geändert
bis " + " und danach funktionierte der BefehlPluginUpdatebis.

0
stefansson

Für Pycharm können Sie Git -> Revert ausführen und dann ziehen.

0
Munichong

Ich habe es versucht und es erfolgreich gemacht, bevor Sie ziehen, alle Dateien festzuschreiben, die Sie nicht festgelegt haben, dann erhalten Sie diese Nachrichten nicht von AS. 

0
Ta Quang Tu

Diese Meldung kann auch auftreten, wenn git-lfs verwendet wird und ein Dateizeiger von einer echten Datei überschrieben wurde.

dann benutzt du:

git stash
git lfs migrate import
git pull

volle Ausgabe aus meinem Fall

λ git stash
Saved working directory and index state WIP on master: 5d4ad47 Merge branch 'feature/...' into 'master'
Encountered 1 file(s) that should have been pointers, but weren't:
        public/Apple-touch-icon.png

λ git pull
Updating 5a4ad44..b25f79d
error: Your local changes to the following files would be overwritten by merge:
        public/Apple-touch-icon.png
Please commit your changes or stash them before you merge.
Aborting

λ git lfs migrate import
migrate: Fetching remote refs: ..., done
migrate: Sorting commits: ..., done
migrate: Rewriting commits: 100% (0/0), done
migrate: Updating refs: ..., done
migrate: checkout: ..., done


λ git pull
Updating 5d4ad47..a25c79a
Fast-forward
 public/Apple-touch-icon.png | Bin 2092 -> 130 bytes
 public/favicon.ico          | Bin 6518 -> 1150 bytes
 2 files changed, 0 insertions(+), 0 deletions(-)

siehe https://github.com/git-lfs/git-lfs/issues/2839

0
c33s

Die einfachste Lösung ist:

git reset --hard && git pull
0
Jackkobec

Wenn dieser Fehler auf Zeilenenden zurückzuführen ist,

git add
git checkout mybranch

wird funktionieren. Ich bin nicht wirklich sicher, warum es funktioniert.

0
user60561