Nachdem ich den entfernten Zweig releases/rel_5.4.1
mit der Git-GUI ausgecheckt habe, wird diese unerwartete Fehlermeldung angezeigt, wenn ich versuche, Push
zu versuchen:
fatal: The upstream branch of your current branch does not match
the name of your current branch. To Push to the upstream branch
on the remote, use
git Push Origin HEAD:releases/rel_5.4.1
To Push to the branch of the same name on the remote, use
git Push Origin rel_5.4.1
Ich weiß nicht, worüber Git spricht. Ich möchte wahrscheinlich zu Origin releases/rel_5.4.1
schieben, da dies der Zweig ist, den ich ausgecheckt habe. Also scheint mir keine Option richtig zu sein.
git status
sagt, ich bin im Zweig rel_5.4.1
.
Hier ist der Zweig, wie er in meinem .git/config
erscheint:
[branch "rel_5.4.1"]
remote = Origin
merge = refs/heads/releases/rel_5.4.1
Was ist los?
Ihr lokaler Zweig heißt rel_5.4.1
, aber der entfernte Zweig ist releases/rel_5.4.1
(für Git hat der /
keine besondere Bedeutung in den Zweignamen, außer um sie für das menschliche Auge lesbarer zu machen).
Beim Push ist Git vorsichtig, ob Sie Ihre Verzweigung nach releases/rel_5.4.1
(den Namen der entfernten Verzweigung) verschieben möchten oder ob Sie eine neue entfernte Verzweigung erstellen möchten. Es bemerkt jedoch die Ähnlichkeit der Namen.
Wenn Sie keinen neuen Zweig erstellen möchten, lautet der richtige Befehl
git Push Origin HEAD:releases/rel_5.4.1
Sie könnten auch verwenden
git Push Origin rel_5.4.1:releases/rel_5.4.1
Um die Warnung ein für alle Mal zu beheben, benennen Sie Ihren lokalen Zweig so um, dass er mit dem Remote-Namen übereinstimmt:
git branch -m releases/rel_5.4.1
Zum Wohle der Leser, die das wahrscheinlich wichtigste Detail vermissen könnten, gut versteckt in den Kommentaren:
Dies ist auf die Einstellung git config Push.default
zurückzuführen. Definiert, was git
bei Eingabe von git Push
( siehe Link ) tut.
In der Frage wurde anscheinend die Einstellung auf simple
gesetzt (dies ist der Standard für git v2
), wahrscheinlich mit
git config --global Push.default simple
Dies bedeutet, dass git
nicht pusht, wenn der lokale Zweig und der entfernte Zweig nicht genau übereinstimmen. Um Push auf den Tracking-Zweig zuzulassen, verwenden Sie make git pull
und git Push
symmetric
git config --global Push.default upstream
Hinweis: Lassen Sie --global
weg, um nur die Einstellung für das aktuelle (lokale) git
-Repository zu ändern.
Dieser Fehler kann für alle Fälle behoben werden:
git branch releases/rel_5.4.1 -u Origin/releases/rel_5.4.1
Es ändert den Upstream des Zweigs, um der richtigen Fernbedienung (wieder) zu entsprechen.
In meinem Fall hat git branch --unset-upstream
dieses Problem gelöst.
Es scheint, als hätte ein lokaler Zweigname, der sich von der entfernten unterscheidet, nicht das, was Git
zu sehr mag. Sie müssen ausstellen:
git Push Origin HEAD:releases/rel_5.4.1
explizit bei jedem Push