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
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.
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
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.
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
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