it-swarm.com.de

Was bedeutet "Git Push-Updates wurden nicht abgelehnt"?

Ich verwende Git, um meine zwei Computer und meine Entwicklung zu verwalten. Ich versuche, Änderungen an GitHub zu übernehmen und erhalte den Fehler.

Einige Verweise konnten nicht nach <repo> verschoben werden. Um zu verhindern, dass Sie den Verlauf verlieren, wurden Aktualisierungen ohne Vorwärtsspulen abgelehnt. Remote-Änderungen zusammenführen, bevor Sie erneut drücken.

Was könnte das verursachen und wie kann ich das beheben? 

BEARBEITEN:  

Beim Ziehen des Repos wird Folgendes angezeigt:

* Zweig Master-> Master (Nicht-Schnellvorlauf) Schon aktuell

Schieben gibt mir immer noch den oben genannten Fehler.

130
Moshe

GitHub hat einen schönen Abschnitt namens " Umgang mit" Nicht-Schnellvorlauf "-Fehlern "

Dieser Fehler kann auf den ersten Blick etwas überwältigend sein, keine Angst haben.
Einfach ausgedrückt, git kann die Änderung auf der Fernbedienung nicht vornehmen, ohne Commits zu verlieren, und lehnt daher den Push ab.
Normalerweise wird dies dadurch verursacht, dass ein anderer Benutzer zu demselben Zweig wechselt. Sie können dies beheben, indem Sie den Remote-Zweig abrufen und zusammenführen oder mithilfe von Pull beide gleichzeitig ausführen.

In anderen Fällen ist dieser Fehler auf zerstörerische Änderungen zurückzuführen, die lokal mit Befehlen wie git commit --amend oder git rebase vorgenommen wurden.
Während Sie die Fernbedienung überschreiben können, indem Sie --force zum Befehl Push hinzufügen, sollten Sie dies nur tun, wenn Sie absolut sicher sind, dass dies der Fall ist.
Erzwungene Push-Aktionen können zu Problemen für andere Benutzer führen, die den Remote-Zweig abgerufen haben. Dies wird als schlechte Praxis betrachtet. Wenn Sie Zweifel haben, drücken Sie nicht.


Git kann auf der Fernbedienung keine Änderungen wie eine Schnellvorlauf-Zusammenführung vornehmen, die eine Visual Git-Referenz veranschaulicht:

alt text

Dies ist nicht genau Ihr Fall, aber es hilft, zu sehen, was "Schnellvorlauf" ist (wo die HEAD eines Zweiges einfach zu einem neuen, letzten Commit verschoben wird).


Das "branch master->master (non-fast-forward) Already-up-to-date" ist normalerweise für lokale Zweigstellen gedacht, die ihren entfernten Gegenpart nicht verfolgen.
Siehe zum Beispiel diese SO - Frage " git pull sagt aktuell, aber git Push lehnt den nicht schnellen Vorlauf ab ".
Oder die beiden Zweige sind miteinander verbunden, stimmen jedoch nicht mit ihrer jeweiligen Geschichte überein:
Siehe " Unendliche GIT-Geschichte - was mache ich hier falsch? "

Dies bedeutet, dass Ihr Subversion-Zweig und Ihr Remote-Git-Master-Zweig sich nicht einig sind.
Eine Änderung wurde auf eine andere verschoben, die sich nicht in der anderen befindet.
Starten Sie gitk --all, und es sollte Ihnen einen Hinweis darauf geben, was falsch gelaufen ist - suchen Sie in der Historie nach "Gabeln".

120
VonC

Dies bedeutet, dass andere Commits in das Remote-Repository verschoben wurden, die von Ihren Commits abweichen. Sie können dies normalerweise mit einem lösen 

git pull

bevor du drückst

Letztlich bedeutet "schneller Vorlauf", dass die Commits direkt auf den Arbeitsbaum angewendet werden können, ohne dass eine Zusammenführung erforderlich ist.

48
minichate

Bei einem Fast-Forward-Update ändern sich nur die eine Seite nach dem letzten Commit auf der anderen Seite, sodass keine Zusammenführung erforderlich ist. Dies bedeutet, dass Sie Ihre Änderungen zusammenführen müssen, bevor Sie Push ausführen können.

10
bdukes

in diesem Fall möchten Sie die Push-Operation mit erzwingen

git Push Origin master --force

1
uspinar

Machen Sie niemals einen git -f Push, da dies zu späteren katastrophalen Folgen führen kann.

Sie müssen nur einen Git-Pull Ihrer lokalen Niederlassung machen.

Bsp: - git pull Origin 'your_local_branch'

und dann einen git Push

0
Abhishek Thomas

Sie müssen den conflicts locally zusammenführen und auflösen, bevor Sie die Änderungen an Remote Repo/Fork übertragen. 

1) ziehen (holen und zusammenführen) 

$ git pull remote branch 

2) Drücken Sie die Änderungen

$ git Push remote branch 

Trotzdem haben Sie eine schnelle Wahl für Push mit Hilfe der --force-Option. Sie sollten jedoch vermieden werden, da dies zu Änderungen führen oder sich negativ auf andere Mitarbeiter auswirken kann.

0
msoliman