Après avoir effectué une vérification de la branche distante releases/rel_5.4.1
à l'aide de l'interface graphique de Git, je vois ce message d'erreur inattendu lorsque j'essaie de Push
:
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
Je ne sais pas de quoi Git parle. Je veux probablement pousser à Origin releases/rel_5.4.1
puisque c'est la branche que j'ai vérifiée. Donc, aucune option ne me semble correcte.
git status
dit que je suis sur la branche rel_5.4.1
.
Voici la branche telle qu'elle apparaît dans mon .git/config
:
[branch "rel_5.4.1"]
remote = Origin
merge = refs/heads/releases/rel_5.4.1
Que se passe-t-il?
Votre branche locale s'appelle rel_5.4.1
mais la branche distante est releases/rel_5.4.1
(en ce qui concerne Git, le /
n'a pas de signification particulière dans les noms de branche, sauf pour faciliter leur lecture par l'œil humain).
Lorsque vous poussez, Git est prudent si vous voulez pousser votre branche sur releases/rel_5.4.1
(le nom de la branche distante) ou créer une nouvelle branche distante. Il remarque cependant la similitude des noms.
Sauf si vous souhaitez créer une nouvelle branche, la commande correcte est
git Push Origin HEAD:releases/rel_5.4.1
Vous pouvez aussi utiliser
git Push Origin rel_5.4.1:releases/rel_5.4.1
Pour corriger l'avertissement une fois pour toutes, renommez votre branche locale pour qu'elle corresponde au nom distant:
git branch -m releases/rel_5.4.1
Pour le bénéfice des lecteurs qui pourraient manquer le détail probablement le plus important, bien caché dans les commentaires:
Ceci est dû au paramètre git config Push.default
. Il définit ce que git
fait lorsque vous entrez git Push
( voir lien ).
Dans la question, apparemment, le paramètre a été défini sur simple
(valeur par défaut de git v2
), probablement avec
git config --global Push.default simple
Cela signifie que git
refuse de transmettre lorsque les branches locale et distante ne correspondent pas exactement. Pour autoriser le Push vers la branche de suivi, donc make git pull
et git Push
symétrique, utilisez
git config --global Push.default upstream
Remarque: Laissez --global
de côté pour modifier simplement le paramètre du référentiel actuel (local) git
.
Cette erreur peut être corrigée une fois pour toutes avec:
git branch releases/rel_5.4.1 -u Origin/releases/rel_5.4.1
Cela modifie l’amont de la branche pour qu’il corresponde (encore une fois) à la télécommande correcte.
Dans mon cas, git branch --unset-upstream
a résolu ce problème.
Cela ressemble à avoir un nom de branche local différent de celui de la télécommande, ce que Git
n'aime pas trop. Vous devrez émettre:
git Push Origin HEAD:releases/rel_5.4.1
explicitement à chaque Push