Kann nicht auf GitHub übertragen werden – sagt immer wieder, dass zusammengeführt werden muss
Lesezeit: 10 Minuten
Benutzer1353717
Ich bin neu in GitHub. Heute bin ich auf ein Problem gestoßen, als ich versucht habe, meinen Code auf GitHub zu übertragen.
Pushing to [email protected]:519ebayproject/519ebayproject.git
To [email protected]:519ebayproject/519ebayproject.git
! [rejected] master -> master (non-fast-forward)
error: failed to push some refs to '[email protected]:519ebayproject/519ebayproject.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Merge the remote changes (e.g. 'git pull')
hint: before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
Ich habe noch nichts in das Repository gepusht, warum muss ich also etwas ziehen?
Beachten Sie, dass dies auch für Branches passieren kann, die zuvor lokal besucht wurden und Commits im Upstream-Repository hatten. Gibt es eine einfache Möglichkeit, einen so alten Zweig einfach vorzuspulen oder Git einfach im lokalen Repository vergessen zu lassen?
– Thorbjørn Ravn Andersen
19. Februar 2013 um 9:27 Uhr
@ThorbjørnRavnAndersen – Ich habe es geschafft, dieses Szenario mit “git push -f” zu beheben, wodurch Git seine imaginären Probleme vergessen zu lassen schien 🙂
– Staffel
28. Mai 2013 um 14:37 Uhr
Ich habe eine Beschwerde darüber von einem Git-Neuling gesehen. Der Grund dafür ist, dass sie beim Erstellen eines neuen Projekts auf GitHub das Kontrollkästchen „Mit Readme initialisieren“ verlassen oder .gitignore/GPL-Optionen auswählen, sodass das neue Projekt bereits einen Commit hat, den sie lokal nicht haben, daher die durch den obigen Fehler verursachte Verwirrung.
– Ruslan Kabalin
14. Oktober 2013 um 14:30 Uhr
@Echelon Die Option -f, um den Push zu erzwingen, ist gefährlich. Ich habe es gerade in einem Teamprojekt verwendet und 6 Commits wurden “gestreift”, einfach vom Server gelöscht und keine Möglichkeit, sie zurückzubekommen!
– Löschen
14. Januar 2014 um 10:47 Uhr
Es ist trendy, Git zu loben. Aber fast alle Entwickler, mit denen ich gesprochen habe, stimmen privat darin überein, dass sie persönlich Git hassen. Jetzt, da sie Git verwenden, verbringen sie viel mehr Zeit mit der Quellcodeverwaltung als früher, als sie notgedrungen oder TFS verwendet haben.
– Entwickler747
5. März 2015 um 16:26 Uhr
Nick Rolando
Dies kann dazu führen, dass das Remote-Repository Commits verliert; Verwenden Sie es mit Vorsicht.
Wenn Sie den entfernten Zweig nicht mit Ihrem lokalen Zweig zusammenführen möchten (siehe Unterschiede mit git diff) und einen Kraftstoß ausführen möchten, verwenden Sie die Push-Befehl mit -f
git push -f origin <branch>
wo origin ist der Name von Ihnen Fernbedienung Repo.
Normalerweise weigert sich der Befehl, eine entfernte Referenz zu aktualisieren, die kein Vorfahre der lokalen Referenz ist, die zum Überschreiben verwendet wurde. Dieses Flag deaktiviert die Prüfung. Dies kann dazu führen, dass das Remote-Repository Commits verliert; Verwenden Sie es mit Vorsicht.
Dies funktionierte für mich für ein Repo, das ich auf Github habe, aber ich hatte ein Untermodul von Heroku in meiner App. und ich musste die Dateien aus dem Submodul holen und dann die aktualisierte App zu Heroku pushen.
– J Gallardo
14. November 2013 um 22:37 Uhr
Lesen Sie unbedingt die letzte Zeile des Kommentars zu diesem Beitrag! “Dies kann dazu führen, dass das Remote-Repository Commits verliert; verwenden Sie es mit Vorsicht.” Kraftstöße in einer Teamumgebung durchzuführen ist eine gefährliche Sache und sollte normalerweise vermieden werden.
– Adam Kalnas
29. April 2014 um 16:07 Uhr
Dies kann auch den gesamten Verlauf aus dem ursprünglichen Repository zum Remote HINZUFÜGEN, indem „Cherry-Pick“ verwendet wird, um „nur“ einen Commit hinüber zu verschieben. Wiederherstellung aus Backup erforderlich…
– rickfoosusa
9. August 2016 um 14:56 Uhr
Es ist auch erwähnenswert, dass, wenn Sie verwenden Github, dies kann ein open überschreiben Pull-Anfrage die Sie zuvor mit Ihren letzten Commits erstellt haben. Von Github-Dokumente: “Erzwungenes Pushen kann Ihre Pull-Anforderung beschädigen”.
– Armfuß
17. Juli 2017 um 11:40 Uhr
Das hat bei mir funktioniert. Ich habe versucht $ git pull origin master -v aber es gibt Fehler fatal: refusing to merge unrelated histories. Dann habe ich das versucht und es hat funktioniert und meine lokalen Dateien erschienen im Github Remote Repo.
– G_real
23. August 2019 um 15:42 Uhr
Jake Green
Wie die Nachricht sagt,
Führen Sie die Remote-Änderungen zusammen (z. B. ‘git pull’)
Verwenden git pull um die neuesten Änderungen aus dem Remote-Repository in Ihr lokales Repository zu ziehen. In diesem Fall erfordert das Pullen von Änderungen eine Zusammenführung, da Sie Änderungen an Ihrem lokalen Repository vorgenommen haben.
Ich werde ein Beispiel und ein Bild zur Erklärung bereitstellen. Nehmen wir an, Ihr letzter Pull vom Ursprung/Zweig war bei Commit B. Sie haben einige Arbeiten abgeschlossen und festgeschrieben (Commit C). Zur gleichen Zeit hat jemand anderes seine Arbeit abgeschlossen und in den Ursprung/Zweig verschoben (Commit D). Es muss eine Zusammenführung zwischen diesen beiden Zweigen geben.
local branch: --- Commit C
/
/
/
origin/branch: Commit A ------ Commit B ---- Commit D
Da Sie derjenige sind, der pushen möchte, zwingt Git Sie, die Zusammenführung durchzuführen. Dazu müssen Sie die Änderungen zuerst aus Ursprung/Zweig ziehen.
local branch: --- Commit C -- Commit E
/ /
/ /
/ /
origin/branch: Commit A ------ Commit B ---- Commit D
Nach Abschluss der Zusammenführung können Sie nun den Ursprung/Zweig schnell zu Commit E vorspulen, indem Sie Ihre Änderungen übertragen.
Git erfordert, dass Sie Merges selbst handhaben, da ein Merge zu Konflikten führen kann.
Was ist, wenn Sie nicht fusionieren möchten? Und lassen Sie D (zumindest vorerst) einfach als Seitenzweig. Später werde ich nach C vielleicht mehr schreiben; jemand anderes könnte nach D mehr tun. Was ist die Eile mit der Fusion? Wie kann ich einen Seitenzweig verschieben, ohne ihn zusammenzuführen? ~~~
– Steve Krüger
26. November 2012 um 17:43 Uhr
local/branch und origin/branch sollen denselben Branch darstellen, aber auf unterschiedlichen Rechnern (local vs origin); local/branch zu pushen bedeutet, origin/branch zu aktualisieren. Wenn Sie möchten, dass der Status Ihres Zweigs für andere sichtbar ist (d. h. auf Ursprung), aber Sie nicht mit Ursprung/Zweig zusammenführen möchten, sollten Sie einen neuen Zweig von Lokal/Zweig erstellen (git branch [name]) und pushen Sie diesen Zweig zum Ursprung (git push -u origin [name])
– Jake Greene
27. November 2012 um 18:40 Uhr
Tolle Erklärung. Dies Video zeigt eine kurze Demonstration des Problems und wie es gelöst werden kann, wie @JakeGreene beschreibt, sowie zwei Möglichkeiten, es beim Einrichten eines neuen Repositorys von vornherein zu vermeiden.
– Kevin Markham
26. Oktober 2014 um 17:45 Uhr
etwas Jahre später scheint diese Antwort dieser anderen sehr, sehr ähnlich zu sein
– superjos
12. August 2015 um 13:03 Uhr
Für mich git pull auch gedruckt Already up-to-date. Es stellte sich heraus, dass ich mich nicht auf dem Zweig befand, auf dem ich mich befand, sondern auf einem abgetrennten HEAD-Zweig (möglicherweise von einer fehlgeschlagenen Zusammenführung?). Dies war nach dem Laufen offensichtlich git branch. Nach dem Rennen git checkout mybranch alles funktionierte wie erwartet.
– Schreiter
6. Oktober 2018 um 23:54 Uhr
AYK
Haben Sie Ihren Code vor dem Pushen aktualisiert?
Verwenden git pull origin master bevor du irgendetwas drückst.
Ich gehe davon aus, dass Sie verwenden origin als Name für Ihre Fernbedienung.
Sie müssen vor dem Push ziehen, um Ihr lokales Repository auf den neuesten Stand zu bringen, bevor Sie etwas pushen (nur für den Fall, dass jemand anderes bereits Code aktualisiert hat github.com). Dies hilft bei der Lösung von Konflikten vor Ort.
Woher weiß ich den Repository-Namen? Wenn ich tippe git pull origin master git beschwert sich darüber 'origin' does not appear to be a git repository
– ziyuang
17. Dezember 2012 um 5:16 Uhr
‘Herkunft’ ist eine Fernbedienung. Sie können verwenden git remote --verbose um alle Remotes zu sehen, die in Ihrem Git-Ordner konfiguriert sind. Die auf dem Bildschirm angezeigten Informationen enthalten auch entweder „[email protected]“-Pfade oder HTTPS-Pfade, von denen aus Sie erkennen können, wohin Sie pushen müssen. Hoffe das hilft !
– AYK
17. Dezember 2012 um 5:38 Uhr
git pull origin master zeigt Bereits aktuell. aber dann, wenn Sie versuchen, auf origin_branch zu drücken, sagen Sie die gleiche Warnung, die in Frage steht. Irgendein Vorschlag !!
– Code
20. April 2016 um 13:04 Uhr
@Shubh hast du das Problem jemals gelöst? Ich bekomme das gleiche!
– OriginalAlchemist
3. Mai 2016 um 7:15 Uhr
@OriginalAlchemist ja … da ich nur ein Entwickler bin, der an einem Remote-Local-Zweig arbeitet … habe ich das Pushen des lokalen Zweigs erzwungen … und das überschreibt alle Änderungen des offenen Zweigs auf dem Server mit meinen Änderungen vom lokalen System. git push -f <remote> <branch> z.B git push origin überprüfe diesen Thread.
– Code
3. Mai 2016 um 10:03 Uhr
Prayagupa
Dies geschieht normalerweise, wenn Sie git commit und versuche es git push Änderungen vor git pulling auf diesem Ast x wo jemand anderes bereits Änderungen vorgenommen hat.
Der normale Fluss wäre wie folgt,
SCHRITT 1: git stash Ihre lokalen nicht festgeschriebenen Änderungen in diesem Zweig.
SCHRITT 2: git pull origin branch_name -v zu pull and merge zu lokal festgeschriebenen Änderungen in diesem Zweig (Geben Sie dieser Zusammenführung eine Nachricht und beheben Sie Konflikte, falls vorhanden.)
SCHRITT 3: git stash pop der stashgeänderte Änderungen (Dann können Sie Commits für gepoppte Dateien vornehmen, wenn Sie möchten, oder bereits festgeschriebene Änderungen (SCHRITT4) zuerst pushen und später neue Commits für Dateien vornehmen.)
SCHRITT 4: git push origin branch_name -v die zusammengeführten Änderungen.
Ersetzen branch_name mit master (zum master sich verzeigen).
Smit Patel
Erste und einfache Lösung:
Versuchen Sie diesen Befehl git push -f origin master.
Dieser Befehl überschreibt zwangsweise das Remote-Repository (GitHub)
Empfohlene Lösung 1:
Führen Sie diese Befehle aus:
git pull --allow-unrelated-histories //this might give you error but nothing to worry, next cmd will fix it
git add *
git commit -m "commit message"
git push
Wenn das nicht funktioniert, dann mach mit 🔰
Lösung 2 (nicht empfohlen):
Löscht Ihren gesamten Commit-Verlauf und den Commit-Verlauf Ihres Teamkollegen. Also bitte tun Sie dies nicht in einem professionellen Projekt
Benutz nur git push -f origin master wenn -u arbeite nicht für dich.
Dadurch werden fast alle Arten von Fehlern behoben, die beim Übertragen Ihrer Dateien auftreten.
Das Löschen Ihres Git-Repos und der Verlust Ihres gesamten Commit-Verlaufs ist eine “empfohlene” Lösung? Scheint hastig.
– Nils Guillermin
4. Februar 2019 um 14:14 Uhr
@Nils Guillermin Das hängt von Ihrer Situation ab. Wenn ich an einem großen Projekt arbeite, bei dem ich alle Zusammenführungskonflikte beheben muss, würde ich vscode verwenden, um alle Änderungen einfach zu überprüfen und zusammenzuführen. Danke aber für deine Meinung.
– Smit Patel
27. April 2019 um 2:56 Uhr
Diese Antwort ist so schädlich und sollte entfernt werden. Schlagen Sie niemals vor, ein .git-Verzeichnis zu löschen, und Force Pushing sollte niemals auf einem Master-Zweig durchgeführt werden.
– Unendlicher Zoom
16. August 2020 um 2:18 Uhr
Peter Mortensen
Manchmal vergaßen wir das Ziehen und machten viele Arbeiten in der lokalen Umgebung.
Wenn jemand schieben will ohne zu ziehen,
git push --force
funktioniert. Dies wird nicht empfohlen, wenn Sie mit anderen Menschen zusammenarbeiten, aber wenn es sich bei Ihrer Arbeit um eine einfache Sache oder ein persönliches Spielzeugprojekt handelt, ist dies eine schnelle Lösung.
Das Löschen Ihres Git-Repos und der Verlust Ihres gesamten Commit-Verlaufs ist eine “empfohlene” Lösung? Scheint hastig.
– Nils Guillermin
4. Februar 2019 um 14:14 Uhr
@Nils Guillermin Das hängt von Ihrer Situation ab. Wenn ich an einem großen Projekt arbeite, bei dem ich alle Zusammenführungskonflikte beheben muss, würde ich vscode verwenden, um alle Änderungen einfach zu überprüfen und zusammenzuführen. Danke aber für deine Meinung.
– Smit Patel
27. April 2019 um 2:56 Uhr
Diese Antwort ist so schädlich und sollte entfernt werden. Schlagen Sie niemals vor, ein .git-Verzeichnis zu löschen, und Force Pushing sollte niemals auf einem Master-Zweig durchgeführt werden.
– Unendlicher Zoom
16. August 2020 um 2:18 Uhr
kubi
Einige von Ihnen erhalten diesen Fehler möglicherweise, weil Git nicht weiß, welchen Zweig Sie zu pushen versuchen.
Wenn Ihre Fehlermeldung auch enthält
error: failed to push some refs to '[email protected]:jkubicek/my_proj.git'
hint: Updates were rejected because a pushed branch tip is behind its remote
hint: counterpart. If you did not intend to push that branch, you may want to
hint: specify branches to push or set the 'push.default' configuration
hint: variable to 'current' or 'upstream' to push only the current branch.
Beachten Sie, dass dies auch für Branches passieren kann, die zuvor lokal besucht wurden und Commits im Upstream-Repository hatten. Gibt es eine einfache Möglichkeit, einen so alten Zweig einfach vorzuspulen oder Git einfach im lokalen Repository vergessen zu lassen?
– Thorbjørn Ravn Andersen
19. Februar 2013 um 9:27 Uhr
@ThorbjørnRavnAndersen – Ich habe es geschafft, dieses Szenario mit “git push -f” zu beheben, wodurch Git seine imaginären Probleme vergessen zu lassen schien 🙂
– Staffel
28. Mai 2013 um 14:37 Uhr
Ich habe eine Beschwerde darüber von einem Git-Neuling gesehen. Der Grund dafür ist, dass sie beim Erstellen eines neuen Projekts auf GitHub das Kontrollkästchen „Mit Readme initialisieren“ verlassen oder .gitignore/GPL-Optionen auswählen, sodass das neue Projekt bereits einen Commit hat, den sie lokal nicht haben, daher die durch den obigen Fehler verursachte Verwirrung.
– Ruslan Kabalin
14. Oktober 2013 um 14:30 Uhr
@Echelon Die Option -f, um den Push zu erzwingen, ist gefährlich. Ich habe es gerade in einem Teamprojekt verwendet und 6 Commits wurden “gestreift”, einfach vom Server gelöscht und keine Möglichkeit, sie zurückzubekommen!
– Löschen
14. Januar 2014 um 10:47 Uhr
Es ist trendy, Git zu loben. Aber fast alle Entwickler, mit denen ich gesprochen habe, stimmen privat darin überein, dass sie persönlich Git hassen. Jetzt, da sie Git verwenden, verbringen sie viel mehr Zeit mit der Quellcodeverwaltung als früher, als sie notgedrungen oder TFS verwendet haben.
– Entwickler747
5. März 2015 um 16:26 Uhr