Noms ambigus avec GIT?

J'essaie de vérifier l'une de mes twigs locales, appelée TEAM20-lab2-release. Quand j'essaye de faire ceci, j'obtiens une erreur refname ambiguë:

$ git branch TEAM20-lab2-release warning: refname 'TEAM20-lab1-release' is ambiguous. fatal: Ambiguous object name: 'TEAM20-lab1-release'. 

Voici la list de mes twigs:

 $ git branch -a TEAM20-lab1 * TEAM20-lab1-release master remotes/origin/HEAD -> origin/master remotes/origin/master 

Solutions Collecting From Web of "Noms ambigus avec GIT?"

C'est généralement parce que vous avez le même nom (que votre twig) utilisé dans un autre espace de nommage :

  • comme l'espace de noms " distants ": le nom d'un repo distant tel qu'illustré par cette question SO .
    (D'où la request de davitenio pour la git branch -a dans les commentaires)
  • ou l'espace de noms " tags ": avoir une balise nommée d'après une twig peut aussi triggersr ce message (voir cet article )

Mise à jour 2016: Git 2.12 (Q1 2017) ne montrera aucune erreur si une twig et une label partagent le même nom.

Voir le commit b284495 (31 oct. 2016) par Dennis Kaarsemaker ( seveas ) .
Voir comm eef2bda (28 Oct 2016) par Junio ​​C Hamano ( gitster ) .
(Fusionné par Junio ​​C Hamano – gitster – dans commit 6c18dd4 , 27 déc. 2016)

push : ne pas utiliser le refspec par défaut potentiellement ambigu

Lorsque l'user fait le " git push " paresseux sans paramètre avec push.default réglé sur " upstream ", " simple " ou " current ", nous générons en interne une refspec qui a le nom de la twig actuelle du côté source et l'utilise pousser.

Cependant, le nom de la twig (par exemple " test ") peut être un nom ref ambigu dans le context du référentiel source — il peut y avoir une balise avec le même nom, par exemple.
Cela triggersrait une erreur inutile sans aucune faute du côté de l'user final.

Soyez explicite et donnez un nom ref complet en tant que côté source pour éviter l'ambiguïté.
Le côté destination en poussant avec le " current " n'a envoyé que le nom de la twig et a forcé l'extrémité récepsortingce à deviner, ce qui est le même problème.
Soyez explicite là aussi.

pour vous aider à find des references ambiguës

 function branchid() { echo $(basename "$(dirname "$1")")/$(basename "$1"); } for ref in $(git for-each-ref | cut -f2) do echo -e "$ref\t$(branchid "$ref")" done | sort --key 2 | uniq -Df 2 

J'ai le même message d'erreur lorsque j'essaie de définir la twig en amont pour une twig locale.

 cgd@flavia-cgd-mobi:~/Projects/reporter$ git status On branch master nothing to commit, working directory clean cgd@flavia-cgd-mobi:~/Projects/reporter$ git branch --set-upstream-to gerrit/master master warning: refname 'gerrit/master' is ambiguous. fatal: Ambiguous object name: 'gerrit/master'. cgd@flavia-cgd-mobi:~/Projects/reporter$ git remote -vv gerrit ssh://cgd@gerrit.server:29418/reporter (fetch) gerrit ssh://cgd@gerrit.server:29418/reporter (push) cgd@flavia-cgd-mobi:~/Projects/reporter$ git branch -a gerrit/master * master remotes/gerrit/master cgd@flavia-cgd-mobi:~/Projects/reporter$ git branch -d gerrit/master Deleted branch gerrit/master (was 1234567). cgd@flavia-cgd-mobi:~/Projects/reporter$ git branch --set-upstream-to gerrit/master master Branch master set up to track remote branch master from gerrit. cgd@flavia-cgd-mobi:~/Projects/reporter$ git fetch cgd@flavia-cgd-mobi:~/Projects/reporter$ git status On branch master Your branch is up-to-date with 'gerrit/master'. nothing to commit, working directory clean 

Comme vous pouvez le voir, j'ai créé une twig locale appelée gerrit / master qui a provoqué le conflit car git ne pouvait pas décider de suivre la twig locale ou distante. Supprimer la twig erronée a arrangé la chose et m'a rendu heureux encore.