web-dev-qa-db-fra.com

fatal: la branche en amont de votre branche actuelle ne correspond pas au nom de votre branche actuelle

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?

39
Aaron Digulla

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
33
Aaron Digulla

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.

48
Tino

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.

19
s.meijer

Dans mon cas, git branch --unset-upstream a résolu ce problème.

8
gpap

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

0
hek2mgl