Fehler „Updates wurden abgelehnt, weil die Remote Arbeit enthält, die Sie lokal nicht haben“

Lesezeit: 5 Minuten

Benutzeravatar von thanos
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:

git pull remotename master:dev
git add --all
git commit -m "some message"
git pull remotename master:dev
git push remotename master:dev

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

Benutzeravatar von Donal
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

Benutzeravatar von Himanshu
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

Benutzeravatar von Peter Mortensen
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

Benutzeravatar von Samir Poudel
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

1446200cookie-checkFehler „Updates wurden abgelehnt, weil die Remote Arbeit enthält, die Sie lokal nicht haben“

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy