Git: Updates wurden zurückgewiesen, weil das Remote-Programm Arbeit enthält, die Sie nicht lokal haben

Ich arbeite an einem Team mit ein paar Entwicklern, die git auf BitBucket verwenden. Wir arbeiten alle an einem dev Zweig und drängen nicht darauf, ihn zu master .

Einer der Entwickler hat einen falschen Code eingegeben, der versehentlich meinen eigenen überschrieben hat, und jetzt versuche ich, den richtigen Code zurück zum Repo zu bringen. Ich habe diesen Fehler nun seit ein paar Tagen gelesen. Ich kann nicht mehr zum Repo wechseln, weil ich den folgenden Fehler erhalte:

  ! [rejected] master -> dev (fetch first) error: failed to push some refs to 'https://myusername@bitbucket.org/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: (eg, 'git pull ...') before pushing again. hint: See the 'Note about fast-forwards' in 'git push --help' for details. 

Ich folge den statementen und pull , aber dann erhalte ich einen Merge-Konflikt. Nach dem Eingeben einer Nachricht für den Zusammenführungskonflikt ist mein lokaler Code nun der falsche Code, den der andere Entwickler versehentlich hochgeladen hat (wie von der pull function erwartet). Also ersetze ich den falschen Code durch das Backup, das ich vor dem Commit kopiert habe, und wenn ich erneut drücke, bekomme ich den gleichen Fehler.

Es ist wirklich frustrierend, ich möchte wirklich meinem Team helfen und beitragen, aber ich kann nicht wegen diesem Fehler. Kann jemand dieses Problem lösen? Ich würde jede Hilfe sehr schätzen.

Dies sind die Befehle, die ich ausführe, wenn es jemandem hilft:

 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, wenn ich diese Reihenfolge einhalten würde, würde ich keine Merge-Konflikte bekommen. Ich schätze ich lag falsch. Danke noch einmal

Update: Ich sollte hinzufügen, dass ich ein paar Stunden auf Google und Stackoverflow gesucht habe, und verschiedene statementen befolgt habe, aber ich kann immer noch nicht zum dev Zweig wechseln.

git pull master:dev holt den remote/master Zweig und fügt ihn in Ihren local/dev Zweig ein.

git pull dev holt den remote/dev Zweig und fügt ihn in Ihren aktuellen Zweig ein.

Ich glaube, du hast gesagt, dass das in Konflikt stehende Commit auf remote/dev , also ist das der Zweig, den du wahrscheinlich holen und zusammenführen wolltest.

In diesem Fall merge Sie den Konflikt nicht wirklich mit Ihrer lokalen Niederlassung, was irgendwie komisch ist, da Sie sagten, Sie hätten den falschen Code in Ihrer Arbeitskopie gesehen. Vielleicht möchten Sie überprüfen, was in remote/master .

Verwenden Sie diesen Befehl in Termial

git push -f Ursprungs-Master

Es passiert, wenn wir versuchen, in das Remote-Repository zu wechseln, 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. Also nimm zuerst den Zug von der Fernbedienung

 git pull 

Es aktualisiert Ihr lokales Repository und fügt eine neue Readme Datei hinzu. Dann Push aktualisierten Änderungen an Remote

 git push origin master 

Ich habe es behoben, ich bin mir nicht ganz sicher, was ich getan habe. Ich habe versucht, einfach zu schieben und zu ziehen mit:

git pull dev anstelle von git pull master:dev

Hoffe, das hilft jemandem, wenn sie das gleiche Problem haben.

Ich hatte diesen Fehler und es war, weil es ein Update auf dem Server gab, aber SourceTree keine Updates verfügbar zeigte (möglicherweise weil ich offline war, als es zuletzt überprüfte). Also habe ich einen Refresh im Source-Tree gemacht und jetzt zeigt es 2 Items an, anstatt 1 Item zu drücken.

Stellen Sie also sicher, dass Sie auf ” Aktualisieren” oder ” Ziehen” klicken , wenn Sie diesen Fehler erhalten, und versuchen Sie es erneut.

  Well actually github is much simpler than we think and absolutely it happens whenever we try to **push** even after we explicitly inserted some files in our git repository so, in order to fix the issue simply try.. 

: Ich ziehe

und dann..

: git push

Hinweis: Wenn Sie versehentlich in vim Editor stecken nach dem Ziehen Ihres Repository als keine Sorge, schließen Sie einfach Vim Editor und versuchen Sie Push 🙂

Sie müssen Folgendes eingeben:

 $ git pull $ git fetch $ git merge 

Wenn Sie einen git push origin master --force , haben Sie ein großes Problem.