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.
Okay, mit den beiden anderen Antworten habe ich eine direkte Lösung gefunden:
git checkout HEAD^ file/to/overwrite
git pull
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:
Übernehmen Sie alles, was Sie nicht überschreiben möchten, und verwenden Sie die obige Methode für den Rest.
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.
Dies funktioniert für mich, um alle lokalen Änderungen zu überschreiben und erfordert keine Identität:
git reset --hard
git pull
Hier ist eine Lösung, die inszenierte Änderungen wegwirft:
git reset file/to/overwrite
git checkout file/to/overwrite
Sie können Ihre Änderungen entweder festschreiben, bevor Sie die Zusammenführung durchführen, oder Sie verwahren sie:
git stash save
git merge Origin/master
git stash pop
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
Wenn Ihr Repository einige Dateien enthält, die aus master
entfernt wurden:
git checkout master
git fetch Origin
git reset --hard Origin/master
git checkout -b newbranch
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.
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.
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.
Sie können dies zum Überschreiben von Dateien verwenden
git checkout file_to_overwrite
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.
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
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.
git reset --hard && git clean -df
Dadurch werden alle nicht aufgespürten Dateien zurückgesetzt und gelöscht.
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.
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.
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
Dies ist mir beim Abzug vom Meister aufgefallen.
So habe ich es mit Visual Studio gehandhabt;
Hoffe das hilft!
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.
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:
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.
Für Pycharm können Sie Git -> Revert ausführen und dann ziehen.
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.
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(-)
Die einfachste Lösung ist:
git reset --hard && git pull
Wenn dieser Fehler auf Zeilenenden zurückzuführen ist,
git add
git checkout mybranch
wird funktionieren. Ich bin nicht wirklich sicher, warum es funktioniert.