предупреждение: refname 'xxx' неоднозначно при использовании git-svn - PullRequest
49 голосов
/ 10 января 2011

Я использую git в качестве внешнего интерфейса для Subversion (через git svn).

Итак, для каждой магистрали / ветви svn у меня есть удаленная ветка в git с именем «remotes / xxx».Например, «remotes / trunk», «remotes / coolfeature».

Теперь я хочу иметь одну локальную ветку «по умолчанию» для каждой удаленной ветви, чтобы использовать ее для dcommit.Проблема в том, что я хочу, чтобы такие ветви были названы в честь веток Subversion, например «trunk», «coolfeature», поэтому у меня в git есть следующие ветви:git, «trunk» или «coolfeature», жалуется, что название ветки неоднозначно.Ничего страшного, но я чувствую себя некомфортно.

Вопрос в том, как я могу справиться с этим предупреждением, если предположить, что простое переименование ветвей - это не то, что я хочу делать.Каковы лучшие практики для таких случаев?

Ответы [ 4 ]

40 голосов
/ 25 марта 2011

Если вы передадите флаг --prefix=svn/ команде git svn clone, тогда все ветви Subversion будут названы как remotes/svn/branchname. Если это приемлемо для вас, это исправляет предупреждение «refname is Двусмысленное». Это также дает вам хороший способ обращения к удаленным ветвям svn, например, если вы хотите создать локальную ветвь отслеживания, это будет выглядеть примерно так:

$ git checkout -b branchname svn/branchname

В этом случае локальная ветвь имеет то же имя, что и удаленная ветвь svn, и не вызывает двусмысленной проблемы с именем.

13 голосов
/ 10 января 2011

Если вы просто хотите избавиться от предупреждения, установите core.warnAmbiguousRefs на false:

git config --global core.warnambiguousrefs false

Если вы хотите, чтобы это поведение было только для одного репозитория, пропустите флаг --global.

1 голос
/ 08 марта 2014

Во избежание конфликта сообщений при обращении к локальным ветвям ставьте перед ними префикс heads/

например, конфликтующая ветвь topic

$ git diff topic remotes/topic
warning: reframe 'topic' is ambiguous.
...

становится

$ git diff heads/topic remotes/topic
...
1 голос
/ 23 сентября 2011

Вполне возможно, что у вас есть еще один хобот и coolfeature в качестве тега.В этом случае git не знает, ссылаетесь ли вы на ветку или тег.Переименуйте теги и проверьте, что git не сообщает «неоднозначное» имя

...