Fehler „Updates wurden abgelehnt, weil die Remote Arbeit enthält, die Sie lokal nicht haben“
Lesezeit: 5 Minuten
danke
Ich arbeite in einem Team mit einigen Entwicklern, die Git verwenden Bit Bucket. Wir arbeiten alle an einer Entwickler Zweig, nicht zu drängen Meister bis zu einer Freigabe.
Einer der Entwickler hat falschen Code übernommen, der meinen eigenen versehentlich überschrieben hat, und jetzt versuche ich, den richtigen Code zurück in das Repository zu pushen. Ich lese seit einigen Tagen über diesen Fehler und kann nicht mehr in das Repository pushen, da ich die folgende Fehlermeldung erhalte:
! [rejected] master -> dev (fetch first)
error: failed to push some refs to 'https://[email protected]/repo_user/repo_name.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
Ich folge den Anweisungen und pull, aber dann erhalte ich einen Zusammenführungskonflikt. Nach der Eingabe einer Nachricht für den Zusammenführungskonflikt ist mein lokaler Code jetzt der falsche Code, den der andere Entwickler versehentlich hochgeladen hat (wie von der pull). Also ersetze ich den falschen Code durch das Backup, das ich vor dem Festschreiben kopiert habe, und wenn ich erneut versuche, zu pushen, erhalte ich denselben Fehler.
Wie kann ich dieses Problem lösen?
Dies sind die Befehle, die ich ausführe, um zu committen:
Ich hätte gedacht, dass ich, wenn ich diese Reihenfolge einhalte, keine Zusammenführungskonflikte erhalten würde. Ich schätze ich lag falsch.
Ich habe ein paar Stunden bei Google und Stack Overflow gesucht und verschiedene Anweisungen befolgt, aber ich kann immer noch keinen Git-Push auf die Entwickler Zweig.
Dieselbe Fehlermeldung wird beim Ausgeben angezeigt git push wenn gerade in dir von einem anderen Repo …. die Git-Nachricht sollte aktualisiert werden, um dies widerzuspiegeln, zumal ihr Ton so maßgeblich klingt, dass man vom Gegenteil überzeugt sein könnte
– Scott Stensland
22. März 2021 um 15:53 Uhr
Donal
Sie können alle Prüfungen, die Git durchführt, überschreiben, indem Sie „force push“ verwenden. Verwenden Sie diesen Befehl im Terminal:
git push -f origin master
Sie ignorieren jedoch möglicherweise die vorhandene Arbeit, die sich in der Ferne befindet. Sie schreiben den Verlauf der Fernbedienung effektiv so um, dass er genau wie Ihre lokale Kopie ist.
Die Verwendung des Force-Push-Flags (-f) ist sehr gefährlich und sollte niemals Teil Ihres regulären Arbeitsablaufs sein
– Spaideri
20. April 2017 um 7:13 Uhr
Abgestimmt, da mir in dieser Antwort eine Warnung fehlt.
– Melebios
19. April 2018 um 9:43 Uhr
Oh! Dies zwingt das Repository, sich selbst neu zu schreiben.
– Azarsa
7. Mai 2018 um 11:35 Uhr
@simon das ist gefährlich, weil es die Arbeit ignoriert, die sich in der Ferne befindet, und Ihre Änderungen auf das Repo erzwingt. Wenn Sie also die Arbeit Ihres Teams nicht durcheinander bringen wollen, erzwingen Sie keinen Druck.
– Gasten
19. Februar 2020 um 13:30 Uhr
Heben Sie Ihre Hand, wenn Sie dies getan haben und sich schuldig fühlen, es aber wieder tun würden.
– erich
15. Juli 2020 um 17:40 Uhr
Himanshu
Es passiert, wenn wir versuchen, in das Remote-Repository zu pushen, aber eine neue Datei auf dem Remote erstellt haben, die noch nicht abgerufen wurde, sagen wir Readme. In diesem Fall, wie der Fehler sagt
git lehnt das Update ab
da wir in unserer lokalen Umgebung keine Remote-Aktualisierung vorgenommen haben. Ziehen Sie also zuerst von der Fernbedienung aus
git pull
Es wird Ihr lokales Repository aktualisieren und ein neues hinzufügen Readme Datei. Pushen Sie dann die aktualisierten Änderungen an die Remote
git push origin master
ich habe getan git pull origin develop in meinen lokalen Entwicklungszweig, aber jetzt mache ich es einfach git pull es funktioniert gut für mich, ich weiß nicht warum.
– Marcelo
13. Juni 2018 um 15:10 Uhr
denn standardmäßig, wenn Ihr lokaler Zweig mit dem entfernten Zweig synchronisiert ist und Sie in diesem Zweig ausgecheckt sind, müssen Sie nicht nur einen Zweig angeben git pull reicht
– Himanshu
13. Juni 2018 um 17:26 Uhr
git pull hilft
– Ahnaaf Al Rafee
28. März 2021 um 16:09 Uhr
git pull <remote> master:dev werde die holen remote/master verzweigen und mit Ihrer zusammenführen local/dev Zweig.
git pull <remote> dev werde die holen remote/dev Branch und führen Sie ihn mit Ihrem aktuellen Branch zusammen.
Ich glaube, Sie sagten, der widersprüchliche Commit ist aktiviert remote/devdas ist also der Zweig, den Sie wahrscheinlich abrufen und zusammenführen wollten.
In diesem Fall haben Sie den Konflikt nicht wirklich in Ihren lokalen Zweig gemergt, was irgendwie seltsam ist, da Sie sagten, Sie hätten den falschen Code in Ihrer Arbeitskopie gesehen. Vielleicht möchten Sie überprüfen, was darin vor sich geht remote/master.
Wow … das wusste ich nie. Aber es macht jetzt sehr viel Sinn. Der Master-Zweig war ebenfalls falsch, daher klärt Ihre Antwort meine gesamte Frage. Ich bin noch ein bisschen neu in Git. Vielen Dank, dass Sie mir den Unterschied zwischen diesen beiden erklärt haben!
– danke
23. Juni 2014 um 2:49 Uhr
Die beste Option für mich war git pull --rebase.
– Derek Foulk
2. Juli 2015 um 22:07 Uhr
git pull <remote> master:dev Was ist dev Hier ?
– Ahnaaf Al Rafee
28. März 2021 um 16:07 Uhr
Dies geschieht normalerweise, wenn das Repo einige Elemente enthält, die lokal nicht vorhanden sind. Um also unsere Änderungen zu pushen, müssen wir in diesem Fall die Remote-Änderungen integrieren und dann pushen.
Erstellen Sie also einen Pull von der Ferne
git pull origin master
Drücken Sie dann die Änderungen auf diese Fernbedienung
git push origin master
Sie können dies versuchen: git pull origin master --rebase
Hallo Eduardo! Das hat bei mir funktioniert. Aber können Sie erklären, warum es funktioniert? Was macht dieser Befehl genau?
– Akshaya Natarajan
11. Juni 2020 um 18:24 Uhr
Nach dem manuellen Hinzufügen der Datei README.md auf der Website GitHub. Ich kann das Projekt auch nicht wie gewohnt vom Gerät auf Git übertragen. Deine Antwort hat mir sehr geholfen!!!! Danke Bruder <3
– Nghien Nghien
14. Februar 2022 um 18:43 Uhr
Peter Mortensen
Sie müssen Folgendes eingeben:
git pull
git fetch
git merge
Wenn Sie eine verwenden git push origin master --forcewirst du ein großes Problem haben.
Hallo Eduardo! Das hat bei mir funktioniert. Aber können Sie erklären, warum es funktioniert? Was macht dieser Befehl genau?
– Akshaya Natarajan
11. Juni 2020 um 18:24 Uhr
Nach dem manuellen Hinzufügen der Datei README.md auf der Website GitHub. Ich kann das Projekt auch nicht wie gewohnt vom Gerät auf Git übertragen. Deine Antwort hat mir sehr geholfen!!!! Danke Bruder <3
– Nghien Nghien
14. Februar 2022 um 18:43 Uhr
Samir Pudel
Zum Drücken zwingen
git push -f Ursprungsmeister
Dies sollte wahrscheinlich mit einer Warnung kommen.
– Chris
14. Februar 2020 um 21:32 Uhr
Auch wenn das sicherlich funktionieren wird, würde es Ihnen etwas ausmachen, es zu erklären? Kann es sein, dass es dabei gefährlich wird? Wenn ja, erklären Sie das noch weiter, etwa: „Leute, seid sicher, dass ihr dadurch Commits verliert.“
– Nico Haase
5. Oktober 2020 um 15:35 Uhr
14462000cookie-checkFehler „Updates wurden abgelehnt, weil die Remote Arbeit enthält, die Sie lokal nicht haben“yes
Dieselbe Fehlermeldung wird beim Ausgeben angezeigt
git push
wenn gerade in dir von einem anderen Repo …. die Git-Nachricht sollte aktualisiert werden, um dies widerzuspiegeln, zumal ihr Ton so maßgeblich klingt, dass man vom Gegenteil überzeugt sein könnte– Scott Stensland
22. März 2021 um 15:53 Uhr