Wie ignoriere ich die folgende Fehlermeldung bei Git Pull?
Ihre lokalen Änderungen an den folgenden Dateien werden durch Zusammenführen überschrieben
Was ist, wenn ich sie überschreiben möchte ?
Ich habe Dinge wie versucht git pull -f
, aber nichts funktioniert.
Um klar zu sein, ich möchte nur bestimmte Änderungen überschreiben, nicht alles.
git config core.fileMode false
rette meine ZeitenAntworten:
Wenn Sie alle lokalen Änderungen - einschließlich Dateien, die von git nicht verfolgt werden - aus Ihrer Arbeitskopie entfernen möchten, speichern Sie sie einfach:
Wenn Sie sie nicht mehr benötigen, können Sie sie jetzt ablegen:
Wenn Sie Änderungen, die Sie bereits bereitgestellt haben, nicht speichern möchten - z. B. mit
git add
-, fügen Sie die Option hinzu--keep-index
. Beachten Sie jedoch, dass dies das Zusammenführen weiterhin verhindert, wenn diese bereitgestellten Änderungen mit denen von Upstream kollidieren.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 für den Rest die oben beschriebene Methode.
Verwenden
git checkout path/to/file/to/revert
Sie diese Option für die Änderungen, die Sie überschreiben möchten. Stellen Sie sicher, dass die Datei nicht über bereitgestellt wirdgit reset HEAD path/to/file/to/revert
.quelle
git checkout HEAD^ path/to/file/to/revert
. Die Verwendung von HEAD ^ machte den Unterschied.save --keep-index
" weglassen.Okay, mit Hilfe der beiden anderen Antworten habe ich eine direkte Lösung gefunden:
quelle
Dies funktioniert für mich, um alle lokalen Änderungen zu überschreiben, und erfordert keine Identität:
quelle
Hier ist eine Lösung, die inszenierte Änderungen wegwirft:
quelle
Sie können Ihre Änderungen entweder vor dem Zusammenführen festschreiben oder sie speichern:
git stash save
git merge origin/master
git stash pop
quelle
--autostash
Option nur mit--rebase
Option verfügbar (Wenn Sie Ihre lokalen Änderungen in einer Datei verwerfen möchten, haben Sie folgende Möglichkeiten:
Dann könnten Sie die Datei (en) mit der neuesten Version überschreiben, die gerade ausgeführt wird:
quelle
git reset HEAD~
git checkout
git checkout -- <file>
scheitert miterror: pathspec '<file>' did not match any file(s) known to git.
Wenn Ihr Repository einige Dateien enthält, die entfernt wurden aus
master
:git checkout master
git fetch origin
git reset --hard origin/master
git checkout -b newbranch
quelle
Manchmal funktioniert nichts davon. Ärgerlicherweise wird aufgrund der LF-Sache, die ich denke, das Löschen der Dateien und das anschließende Ziehen funktionieren . Nicht, dass ich diese Lösung empfehle, aber wenn die Datei nicht existiert, informiert git Sie nicht unnötig darüber, dass Ihre Änderungen (die möglicherweise nicht einmal Änderungen sind) überschrieben werden und Sie fortfahren können.
Benutzung auf eigene Gefahr.
quelle
git stash save --keep-index
hat bei mir nicht funktioniert.Der folgende Befehl funktionierte wie erwartet.
Es überschreibt alle lokalen Änderungen, wenn Sie sie nicht benötigen.
quelle
So viele Antworten hier, dass ich es hasse, noch eine hinzuzufügen, aber alle oben genannten sind klobiger als sie sein müssen. Ich muss dies die ganze Zeit tun, da Git verwirrt zu sein scheint und sagt, dass ich Dateien geändert habe, die sich nicht geändert haben (kann nicht zurückgesetzt werden, weil sie sich nicht geändert haben, aber ich kann nicht ziehen, weil sie sich angeblich geändert haben) Das schnellste, das ich bisher gefunden habe, ist:
quelle
Im letzten Git können Sie den Befehl
-r
/--rebase
on hinzufügenpull
, um Ihren aktuellen Zweig nach dem Abrufen über dem Upstream-Zweig neu zu starten. Die Warnung sollte verschwinden, aber es besteht die Gefahr, dass Sie einige Konflikte bekommen, die Sie lösen müssen.Alternativ können Sie verschiedene Zweige mit Gewalt auschecken und dann wieder
master
zurückkehren, z.Dann ziehen Sie es wieder wie gewohnt:
Mit dieser Methode können Sie Zeit sparen, wenn Sie Probleme mit Stashing (
git stash
) und potenziellen Berechtigungen haben, Dateien zurücksetzen (git reset HEAD --hard
), Dateien entfernen (git clean -fd
) usw. Auch die oben genannten Punkte sind leichter zu merken.quelle
Dieses Problem ist darauf zurückzuführen, dass Sie lokal Änderungen an Dateien vorgenommen haben und dieselbe Datei mit denselben Änderungen im Git-Repository vorhanden ist. Vor dem Ziehen / Push benötigen Sie also lokale Änderungen:
So überschreiben Sie lokale Änderungen einer einzelnen Datei:
So überschreiben Sie alle lokalen Änderungen (Änderungen in allen Dateien):
Dieses Problem kann auch daran liegen, dass Sie sich in einem Zweig befinden, der nicht mit dem Hauptzweig zusammengeführt wird.
quelle
git reset --hard && git clean -df
Achtung : Dadurch werden nicht verfolgte Dateien zurückgesetzt und gelöscht.
quelle
Sie können dies zum Überschreiben von Dateien verwenden
quelle
Der beste Weg, um dieses Problem zu lösen, ist:
Danach können Sie die Datei überschreiben durch:
quelle
git checkout -- path/*
nur einmal benutzt und es hat mir erlaubt, den Pull danach auszuführen.Dies funktionierte für mich, um Änderungen auf dem Live-Remote-Server zu verwerfen und aus der Quellcodeverwaltung GitHub zu ziehen:
quelle
Hier ist meine Strategie, um das Problem zu lösen.
Problemstellung
Wir müssen Änderungen in mehr als 10 Dateien vornehmen. Wir haben es versucht
PULL (git pull origin master)
, aber Git rief:Wir haben versucht auszuführen
commit
und dannpull
, aber sie haben auch nicht funktioniert.Lösung
Wir waren tatsächlich in der schmutzigen Phase, weil sich die Dateien im "Staging Area", auch bekannt als "Index Area", und einige im "Head Area", auch bekannt als "Local Git Directory", befanden. Und wir wollten die Änderungen vom Server abrufen.
Überprüfen Sie diesen Link auf klare Weise auf Informationen zu verschiedenen Stufen von Git: GIT-Stufen
Wir haben die folgenden Schritte ausgeführt
git stash
(Dies hat unser Arbeitsverzeichnis sauber gemacht. Ihre Änderungen werden von Git auf dem Stack gespeichert.)git pull origin master
(Ziehen Sie die Änderungen vom Server)git stash apply
(Alle Änderungen vom Stapel angewendet)git commit -m 'message'
(Änderungen übernommen)git push origin master
(Die Änderungen wurden auf den Server übertragen)git stash drop
(Lass den Stapel fallen)Lassen Sie uns verstehen, wann und warum Sie etwas verstauen müssen
Wenn Sie sich im schmutzigen Zustand befinden, bedeutet dies, dass Sie Änderungen an Ihren Dateien vornehmen und dann aus irgendeinem Grund gezwungen sind, für eine sehr dringende Arbeit einen anderen Zweig zu ziehen oder zu wechseln , sodass Sie zu diesem Zeitpunkt nicht ziehen können oder Wechseln Sie, bis Sie Ihre Änderung festschreiben. Der
stash
Befehl ist hier als helfende Hand.Aus dem Buch ProGIT , 2. Auflage:
quelle
Wenn Sie bestimmte Änderungen überschreiben möchten, müssen Sie angeben, welche Sie vergessen möchten.
Sie können versuchen, die Änderungen, die Sie aufgeben möchten, selektiv zu speichern
git stash --patch
und diese dann mit zu löschengit stash drop
. Sie können dann die Remote-Änderungen abrufen und wie gewohnt zusammenführen.quelle
TL; DR;
Ich weiß nicht, warum dies noch nicht beantwortet wurde, aber die Lösung ist, wie Sie sehen können, einfach. Alle Antworten hier schlagen dasselbe vor: Um Ihre lokalen Änderungen zu löschen / zu speichern und Upstream anzuwenden,
save
wenden Sie (falls Sie ) Ihre lokalen Änderungen oben an.Was
git pull --rebase --autostash
macht Schritt für Schritt:Mein Fall (wahrscheinlich auch dein Fall):
Ich habe lokale Änderungen (Änderungen im Arbeitsverzeichnis):
Wenn ich versuche, Remote-Änderungen abzurufen, wird folgende Fehlermeldung angezeigt:
Diese Änderungen überschneiden sich nicht mit lokalen Änderungen:
Also, wenn ich
pull --rebase --autostash
lokale Änderungen ohne Probleme automatisch gespeichert und angewendet habeJetzt sind meine lokalen Änderungen etwas geringer:
quelle
Ich hatte einen Sonderfall: Ich hatte eine Datei mit --assume-unverändert darauf. Es war schwer zu finden, da der
git status
Befehl keine Änderungen zeigtequelle
Wenn Sie Produktionsänderungen auf dem Server beibehalten möchten, führen Sie sie einfach zu einem neuen Konfigurationselement zusammen. Die Verarbeitungsmethode ist wie folgt:
Möglicherweise führen Sie nicht alle Operationen aus. Sie können wissen, was Sie als nächstes tun können.
quelle
Ich habe eine Datei in meinem Repo ignoriert und
git pull upstream master
dabei den folgenden Fehler erhalten:Um das Problem zu beheben, habe ich Folgendes getan
Ich habe es dann getan
git status
und diese Nachricht erhaltenDann
git checkout myfile.js
folgte mirgit pull upstream master
. Diesmal war die Git-Pull-Operation erfolgreich.quelle
Ich bin darauf gestoßen, als ich vom Meister gezogen habe.
So habe ich mit Visual Studio umgegangen;
Hoffe das hilft!
quelle
Die einfachste Lösung ist:
quelle
Ich bin neu in Git und nicht sicher, ob meine Lösung eine gute Idee ist.
Ich habe ALLE Antworten getestet und keine davon hat für mich funktioniert!
Aber ich habe eine andere Lösung gefunden:
Hoffe das hilft.
quelle
Der Fehler "Ihre lokalen Änderungen an den folgenden Dateien würden durch Zusammenführen überschrieben" tritt auf, weil Sie einige Änderungen im lokalen Repo haben, die noch NICHT festgeschrieben wurden. Bevor Sie also vom Remote-Repo abrufen, übernehmen Sie einfach die Änderungen im lokalen Repo.
Nehmen wir an, Ihr Remote-Repo hat einen Zweig xyz und Sie möchten, dass dieser Remote-Repo-Zweig xyz in den lokalen Repo-Zweig xyz zusammengeführt (in diesen kopiert) wird.
quelle
Wenn dieser Fehler auf Zeilenenden zurückzuführen ist,
wird funktionieren. Ich bin mir nicht sicher, warum es funktioniert.
quelle
Für Pycharm können Sie Git -> Zurücksetzen und dann ziehen.
quelle
Diese Meldung kann auch auftreten, wenn sie
git-lfs
verwendet wird und ein Dateizeiger von einer realen Datei überschrieben wurde.dann benutzt du:
volle Ausgabe von meinem Fall
Siehe https://github.com/git-lfs/git-lfs/issues/2839
quelle
Ich habe es versucht und es erfolgreich, bevor Sie ziehen, lassen Sie alle Dateien festschreiben, die Sie nicht festgeschrieben haben, dann werden Sie diese Nachrichten nicht von AS erhalten.
quelle