781 Stimmen

Kann nicht zu GitHub pushen - sagt ständig, dass eine Zusammenführung erforderlich ist

Ich bin auf ein Problem gestoßen, als ich versucht habe, meinen Code auf GitHub zu veröffentlichen.

Pushing to git@github.com:519ebayproject/519ebayproject.git
To git@github.com:519ebayproject/519ebayproject.git
 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to 'git@github.com: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 eingefügt, warum muss ich also etwas ziehen?

6 Stimmen

Beachten Sie, dass dies auch bei Zweigen passieren kann, die zuvor lokal besucht wurden und für die Commits im Upstream-Repository vorgenommen wurden. Gibt es eine einfache Möglichkeit, einen solchen alten Zweig schnell weiterzuleiten oder Git ihn im lokalen Repository einfach vergessen zu lassen?

52 Stimmen

@ThorbjørnRavnAndersen - Ich habe es geschafft, dieses Szenario mit "git push -f" zu beheben, was Git dazu zu bringen schien, seine imaginären Probleme zu vergessen :)

0 Stimmen

4voto

fox323 Punkte 41

Ist der Name Ihrer Verzweigung mit dem Namen der entfernten Verzweigung identisch?

Wenn nicht, sollten Sie einen neuen Zweig mit demselben Namen wie der entfernte Zweig auschecken und versuchen, ihn erneut zu pushen.

Angenommen, der entfernte Zweig, den Sie pushen wollen, ist [ Testen ] und Ihr lokaler Zweig wird als [ Test ].

Wenn Sie nicht in Test Zweig, wechseln Sie zunächst dorthin.

git checkout test

Eröffnen Sie dann einen neuen Zweig und nennen Sie ihn Testen .

git checkout -b testing

Jetzt ist es an der Zeit, die Sache voranzutreiben:

git push [remote repo] testing

3voto

9swampy Punkte 1376

Eine andere Lösung ist es, den Kopf der Fernbedienung durch eine weitere Übergabe voranzutreiben, wenn Sie können. Nachdem Sie diesen erweiterten Kopf in den lokalen Teilbaum gezogen haben, können Sie von dort aus wieder pushen.

3voto

Ivan Punkte 3867

Eine andere Möglichkeit: Benennen Sie Ihre Verzweigung lokal in etwas Neues um.

Sie können es dann zum Beispiel in das entfernte Repository übertragen, wenn Sie auf diese Weise eine Kopie (Backup) aufbewahren und sicherstellen möchten, dass nichts verloren geht.

Sie können den entfernten Zweig holen, um eine lokale Kopie zu haben, und die Unterschiede zwischen (i) dem entfernten Zweig (mit dem alten Zweignamen) und (ii) dem, was Sie haben (mit dem neuen Zweignamen), untersuchen und entscheiden, was zu tun ist. Da Sie die Unterschiede des entfernten Zweigs gar nicht kannten (daher das Problem), ist es viel zu brutal, die Änderungen einfach irgendwo zusammenzuführen oder zu erzwingen.

Schauen Sie sich die Unterschiede an, wählen Sie den Zweig aus, an dem Sie arbeiten wollen, wählen Sie Änderungen aus, die Sie aus dem anderen Zweig haben wollen, oder machen Sie Änderungen rückgängig, die Sie in dem Zweig, den Sie haben, nicht haben wollen, usw.

Dann sollten Sie in der Lage sein, zu entscheiden, ob Sie Ihre bereinigte Version auf die Gegenstelle übertragen oder neue Änderungen hinzufügen wollen oder was auch immer.

3voto

Hemant Punkte 4427

Ein ähnlicher Fehler trat auf, als ich die neuesten Änderungen in ein Git-Repository einspeiste, das ich für gitweb . In meinem Fall habe ich keine Änderungen im Bare Repository vorgenommen, also habe ich mein Bare Repository einfach gelöscht und erneut geklont:

git clone --bare <source repo path> <target bare repo path>

2voto

Suman Astani Punkte 1085

Das Problem mit dem Push-Befehl ist, dass Ihr lokales und entferntes Repository nicht übereinstimmen. WENN Sie readme standardmäßig initialisieren, wenn Sie ein neues Repository aus dem Git-Hub erstellen, dann wird automatisch der Master-Zweig erstellt. Wenn Sie jedoch versuchen, einen Zweig zu pushen, der nicht vorhanden ist, können Sie nicht pushen... Am besten ist es also, ein Repository ohne die Standardinitialisierung von Readme zu erstellen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X