webentwicklung-frage-antwort-db.com.de

git-Fehler beim Versuch, zur Remote-Verzweigung zu schieben

Ich habe Repository A's Hauptzweig von git geklont und meinen eigenen Zweig namens Li ..__ erstellt. Ich habe vor einiger Zeit einige Änderungen vorgenommen und den Inhalt des lokalen Li an das entfernte Li verschoben.

Jetzt habe ich einige Updates vom Remote-Master zu meinem lokalen Master-Zweig und vom lokalen Master-Zweig zum lokalen Li übertragen, und ich versuche, die Updates vom lokalen Li zum Remote-Li zu verschieben zu rennen:

git checkout Li
git Push Origin Li

Ich erhalte folgende Fehlermeldung:

error: failed to Push some refs to '[email protected]:anodejs/system.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.

Beachten Sie, dass mein lokaler Master-Zweig aktualisiert wurde (ich habe git pull Origin-Master aufgerufen) und mit dem lokalen Li-Zweig zusammengeführt. Ich habe dem lokalen Li jedoch eine neue Datei hinzugefügt, sodass das lokale Li nicht mit dem lokalen Master identisch ist (aber das sollte keine Rolle spielen, oder?)

Danke, Li

40
user429400

Finde das diff mit git fetch && git log Li..Origin/Li. Ich würde vermuten, dass Sie Li seit dem letzten Drücken neu basierten oder anderweitig umschneiden, aber dieser Befehl sollte Ihnen genau sagen, was sich in der Fernbedienung befindet und nicht in der lokalen. Mit der Dreipunkt-Syntax können Sie herausfinden, was in (aber nicht in beiden) enthalten ist: git log Li...Origin/Li.

Wenn der Unterschied erwartet wird, mischen Sie einfach mit git merge Origin/Li und dann mit git Push. Wenn die Änderung unerwünscht ist, überschreiben Sie die Fernbedienung mit git Push -f Origin Li. Tun Sie dies nur, wenn Sie die Änderungen der Fernbedienung aufgeben möchten.

28
Christopher

Aktualisierungen wurden abgelehnt, da sich eine abgelegte Zweigspitze hinter der Fernbedienung befindet.

git config --global Push.default current

Verwenden Sie den Befehl oben, um den aktuellen Zweig als Standard festzulegen 

git Push
36
Siva Kandaraj

führen Sie die folgenden Zeilen aus:

git fetch
git remote Prune Origin

Sie aktualisieren alle Ihre Refs. Dann schauen Sie mit einem GUI-Client (zB gitx auf Mac) nach, wie Ihr Quellbaum aussieht. Es sollte helfen, das Problem herauszufinden.

Stellen Sie außerdem sicher, dass Ihr Repo nicht schreibgeschützt ist und Sie Schreibberechtigung haben. 

1
Mert

Sie können Push-Änderungen an der Remote-Adresse erzwingen, es kann jedoch ein neuer Remote-Zweig erzeugt werden

git Push subtree_remote_address.git `git subtree split --prefix=subtree_folder`:refs/heads/branch --force
0
FunkyKat

git branch --set-upstream-to = Ursprung/Master

Wenn Sie den Fehler haben, wenn Sie sich im Zweig 'master' befinden, versuchen Sie den folgenden Befehl:

git branch --set-upstream-to = Ursprung/Master

Oder eine Verknüpfung: Git Push -u Origin master