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