Ich erhalte folgenden Fehler, wenn ich den ersten Github-Push versuche:
[rejected] master -> master (non-fast forward)
error: failed to push some refs to '[email protected]:me/me.git'
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes before pushing again. See the 'non-fast forward'
section of 'git push --help' for details.
Wie kann ich das beheben und Remote-Änderungen zusammenführen?
git pull
, machen Sie ein anderes Commit und dann sollte es gut seingit checkout other-branch; git pull; git push; git checkout branch-i-was-working-on
.Sie können einen Push auch erzwingen, indem Sie das Symbol + vor Ihrem Filialnamen einfügen.
quelle
git reset --hard
Sie haben wahrscheinlich Änderungen an Github, die Sie nie zusammengeführt haben. Versuchen Sie
git pull
, die Änderungen abzurufen und zusammenzuführen, dann sollten Sie in der Lage sein, zu pushen. Entschuldigung, wenn ich Ihre Frage falsch verstanden habe.quelle
Wenn Sie "git pull" und "Bereits auf dem neuesten Stand" anzeigen und trotzdem diesen Fehler erhalten, liegt dies möglicherweise daran, dass einer Ihrer anderen Zweige nicht auf dem neuesten Stand ist. Versuchen Sie, zu einem anderen Zweig zu wechseln, und stellen Sie sicher, dass auch einer auf dem neuesten Stand ist, bevor Sie erneut versuchen, "git push" auszuführen:
Wechseln Sie zu Zweig "foo" und aktualisieren Sie ihn:
Sie können die Zweige sehen, die Sie haben, indem Sie den folgenden Befehl eingeben:
quelle
Sie können es zwingen, zu drücken, aber bitte tun Sie dies NUR, wenn Sie ganz sicher sind, was Sie tun.
Der Befehl lautet:
quelle
Dieses Problem kann auch auftreten, wenn Sie widersprüchliche Tags haben. Wenn Ihre lokale Version und Ihre Remote-Version denselben Tag-Namen für unterschiedliche Commits verwenden, können Sie hier landen.
Sie können es lösen, indem Sie das lokale Tag löschen:
quelle
Als ich diesen Fehler bekam, habe ich meinen gesamten Projektordner gesichert. Dann habe ich so etwas gemacht
... abhängig von Ihrem Filialnamen (wenn es nicht Master ist).
Dann habe ich getan
git pull --rebase
. Danach habe ich die gezogenen Dateien durch die Dateien meines gesicherten Projekts ersetzt. Jetzt bin ich bereit, meine Änderungen erneut zu übernehmen und zu pushen.quelle
1) Erzwingen eines Pulls, um lokale Änderungen zu überschreiben
Wenn Sie sich nicht für die lokal vorgenommenen Änderungen interessieren und den Code aus dem Repository abrufen möchten, können Sie einen Pull erzwingen. Dadurch werden alle auf Ihrem Computer vorgenommenen lokalen Änderungen überschrieben. Eine Kopie der Version im Repository wird angezeigt.
Führen Sie die folgenden Befehle in Ihrer IDE aus:
Dadurch werden alle Ihre lokalen Änderungen sofort zerstört. Stellen Sie daher sicher, dass Sie wissen, was Sie tun, und dass Sie Ihre lokalen Änderungen nicht benötigen.
2) Beibehaltung beider Änderungen (lokal und vom Repo)
Wenn Sie beide Änderungen beibehalten möchten (lokal vorgenommene Änderungen und im Repository vorhandene Änderungen), können Sie Ihre Änderungen hinzufügen und festschreiben. Wenn Sie ziehen, kommt es offensichtlich zu einem Zusammenführungskonflikt. Hier können Sie die Tools in Ihrer IDE (wie Difftool und Mergetool) verwenden, um die beiden Codeteile zu vergleichen und zu bestimmen, welche Änderungen beibehalten und welche entfernt werden sollen. Dies ist der mittlere Weg; Änderungen gehen erst verloren, wenn Sie sie manuell entfernen.
quelle