it-swarm.com.de

git: Aktualisierungen wurden abgelehnt, da die Remote-Datei Arbeit enthält, die Sie nicht lokal haben

Ich arbeite in einem Team mit einigen Entwicklern, die git auf BitBucket verwenden. Wir arbeiten alle an einem dev-Zweig und drängen nicht bis master bis zu einer Veröffentlichung.

Einer der Entwickler hat einen falschen Code übernommen, der meinen eigenen versehentlich überschrieben hat, und jetzt versuche ich, den korrekten Code in das Repo zurückzuschieben. Ich habe diesen Fehler seit ein paar Tagen gelesen, ich kann nicht mehr zum Repo pushen, da folgende Fehlermeldung angezeigt wird:

 ! [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 befolge die Anweisungen und pull, erhalte aber einen Zusammenführungskonflikt. Nach dem Eingeben einer Nachricht für den Zusammenführungskonflikt ist mein lokaler Code jetzt der falsche Code, den der andere Entwickler versehentlich hochgeladen hat (wie von pull erwartet). Ich ersetze also den falschen Code durch das Backup, das ich vor dem Festschreiben kopiert habe, und wenn ich erneut Push versuche, erhalte ich dieselbe Fehlermeldung. 

Es ist wirklich frustrierend, ich möchte meinem Team wirklich helfen und dazu beitragen, aber ich kann wegen dieses Fehlers nicht. Kann jemand dieses Problem lösen? Ich würde mich sehr über jede Hilfe freuen.

Dies sind die Befehle, die ich ausführen muss, um ein Commit auszuführen, wenn dies 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 einhalte, würde ich keine Konflikte bei der Verschmelzung erhalten. Ich schätze ich lag falsch. Danke noch einmal

Update: Ich sollte hinzufügen, dass ich einige Stunden bei Google und stackoverflow gesucht und verschiedenen Anweisungen gefolgt bin, aber ich kann Push immer noch nicht zum Zweig dev.

41
delos

git pull <remote> master:dev ruft den remote/master-Zweig ab und fügt ihn in Ihren local/dev-Zweig ein.

git pull <remote> dev ruft den remote/dev-Zweig ab und fügt ihn in Ihren aktuellen Zweig ein.

Ich denke, Sie sagten, das widersprüchliche Commit sei remote/dev, das ist also der Zweig, den Sie wahrscheinlich abrufen und zusammenführen wollten.

In diesem Fall mischten Sie den Konflikt tatsächlich nicht in Ihrem lokalen Zweig ein. Dies ist ziemlich seltsam, da Sie sagten, Sie hätten den falschen Code in Ihrer Arbeitskopie gesehen. Vielleicht möchten Sie überprüfen, was in remote/master passiert.

23
Jeff

Verwenden Sie diesen Befehl im Terminal

git Push -f Origin master

38
Donal

Dies geschieht, wenn wir versuchen, auf ein Remote-Repository zu pushen, aber eine neue Datei auf Remote erstellt haben, die noch nicht abgerufen wurde, beispielsweise Readme. In diesem Fall wie der Fehler sagt 

git lehnt das Update ab

da wir in unserer lokalen Umgebung keine Fernwartung vorgenommen haben, nehmen Sie zuerst die Fernbedienung aus der Ferne

git pull

Es aktualisiert Ihr lokales Repository und fügt eine neue Readme-Datei hinzu

git Push Origin master
17
Himanshu

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

git pull <remote> dev anstelle von git pull <remote> master:dev

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

5
delos

Tatsächlich ist github viel einfacher als wir denken und es passiert absolut immer dann, wenn wir versuchen, Push selbst nachdem wir einige Dateien explizit in unser Git-Repository eingefügt haben.

: git ziehen

und dann..

: git Push

Hinweis: Wenn Sie aus Versehen in vim editor stecken, nachdem Sie Ihr Repository gezogen haben, schließen Sie den vim editor und versuchen Sie es mit Push :) 

3
deepbchudasama

Ich hatte diesen Fehler und der Grund dafür war ein Update auf dem Server, aber SourceTree zeigte keine verfügbaren Updates an (möglicherweise, weil ich offline war, als es zuletzt geprüft wurde). Ich habe also eine Aktualisierung im Quellbaum durchgeführt und jetzt werden 2 Elemente zum Push anstelle von 1 Element angezeigt. 

Drücken Sie daher unbedingt refresh oder pull, wenn Sie diesen Fehler erhalten, und versuchen Sie es erneut. 

2
1.21 gigawatts

Zum Drücken erzwingen

git Push-f Origin-Master

0
Samir Poudel

Ich hatte zuerst ein SSDT VS-Projekt. Ich wollte das Projekt so verschieben, wie ich es bei Github hatte. Ich wollte, dass Push die erste Version meines Repos ist, die den Master-Zweig startet. Donals Vorschlag von git Push -f Origin master war der einfachste Weg (den ich gesehen habe), dies zu erreichen. Da ich mich nicht darum kümmern musste, etwas neu zu schreiben, schien es sinnvoll zu sein.

0
cromastro

Sie müssen eingeben:

$ git pull
$ git fetch 
$ git merge

Wenn Sie einen git Push Origin master --force verwenden, haben Sie ein großes Problem.

0
gaoyehua

Dies geschieht normalerweise, wenn das Repo einige Elemente enthält, die lokal nicht vorhanden sind. In diesem Fall müssen wir die Remote-Änderungen integrieren und dann Push ausführen, um die Änderungen zu pushen.

Erstellen Sie also einen Pull von der Fernbedienung

git pull Origin master

Dann wechselt Push zu dieser Fernbedienung

git Push Origin master
0
Sravya

Sie können dies versuchen: git pull Origin master --rebase

0
Eduardo Ramos