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

après avoir effectué une vérification de la branche distante releases/rel_5.4.1 en utilisant L'interface graphique Git, je vois ce message d'erreur inattendu quand 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 doute de vouloir pousser à origin releases/rel_5.4.1 puisque c'est la branche que j'ai vérifiée. Donc aucune des deux options 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

Ce qui se passe sur?

32
demandé sur Aaron Digulla 2014-07-21 16:05:54

5 réponses

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û à la git config push.default paramètre. Il définit ce qu' git quand vous entrez git push (voir le lien).

dans la question, apparemment le réglage étaitsimple (qui est la valeur par défaut de git v2), probablement avec

git config --global push.default simple

Cela signifie, que git refuse de pousser quand la branche locale et distante ne correspondent pas exactement. Pour permettre à pousser pour le suivi de la branche, ainsi git pull et git push symétrique, utilisez

git config --global push.default upstream

Remarque: Quitter --global loin de simplement changer le réglage du courant (local) git référentiel.

40
répondu Tino 2017-08-09 11:34:14

votre branche locale s'appelle rel_5.4.1 mais la distance n'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 les rendre plus faciles à lire pour l'œil humain).

quand vous poussez, git se méfie si vous voulez pousser votre branche à releases/rel_5.4.1 (le nom de la branche distante) ou si vous souhaitez créer une nouvelle branche à distance. Il remarque cependant la similitude des noms.

Sauf si vous voulez créer une nouvelle branche, le bon de commande 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 agence locale pour correspondre au nom distant:

git branch -m releases/rel_5.4.1
31
répondu Aaron Digulla 2014-07-21 13:01:23

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

il change l'amont de la branche, pour correspondre à la bonne télécommande (encore).

16
répondu s.meijer 2016-03-29 10:18:37

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

4
répondu gpap 2018-01-17 10:34:10

semble comme ayant un nom de branche local qui est différent que la télécommande n'est pas ce que Git aime trop. Vous devrez question:

git push origin HEAD:releases/rel_5.4.1

explicitement sur chaque pression

0
répondu hek2mgl 2014-07-21 12:48:19