предупреждение: refname 'xxx' неоднозначно при использовании git-svn
Я использую git как интерфейс для Subversion (через git svn).
Итак, для каждой ветки/ветки svn у меня есть удаленная ветвь в git с именем "remotes/xxx". Например, "пульты/соединительные линии", "пульты/охлаждение".
Теперь я хочу иметь одну локальную ветвь по умолчанию для каждой удаленной ветки, чтобы использовать ее для dcommit. Проблема в том, что я хочу, чтобы такие ветки назывались в ветвях Subversion, таких как "trunk", "coolfeature", поэтому у меня есть следующие ветки в git:
trunk
coolfeature
remotes/trunk
remotes/coolfeature
Проблема заключается в том, что каждый раз, когда я ссылаюсь на "туловище" или "coolfeature" git, жалуется, что имя ветки неоднозначно. Не очень, но мне неудобно.
Вопрос в том, как я могу справиться с этим предупреждением, предполагая, что просто переименование веток - это не то, что я хочу делать. Каковы наилучшие методы для таких случаев?
Ответы
Ответ 1
Если вы передадите флаг --prefix=svn/
в команду git svn clone
, то все ветки Subversion будут называться как remotes/svn/branchname
. Если это приемлемо для вас, оно фиксирует предупреждение "refname is twoiguous". Это также дает вам хороший способ обратиться к удаленным ветвям svn, например, если вы хотите создать локальную ветвь отслеживания, это будет примерно так:
$ git checkout -b branchname svn/branchname
Локальная ветвь затем имеет то же имя, что и удаленная ветвь svn, и не имеет двусмысленной проблемы с именем.
Ответ 2
Если вы просто хотите избавиться от предупреждения, установите core.warnAmbiguousRefs
в false
:
git config --global core.warnambiguousrefs false
Если вы хотите использовать это поведение только для одного репозитория, опустите флаг --global
.
Ответ 3
Возможно, у вас есть еще один "багажник" и "coolfeature" в качестве тега. В этом случае git не знает, ссылаетесь ли вы на ветку или тег. Переименуйте теги и проверьте, не сообщает ли git "неоднозначное" имя
Ответ 4
Чтобы избежать конфликтов сообщений, при обращении к локальным ветвям ставьте их перед heads/
например, конфликтующая ветка topic
$ git diff topic remotes/topic
warning: reframe 'topic' is ambiguous.
...
становится
$ git diff heads/topic remotes/topic
...