Git: предупреждение: refname 'master' неоднозначно

Я видел, как несколько человек задают один и тот же вопрос здесь, но, похоже, ни один из их советов не применим ко мне. Я'Я получаю предупреждение, которое находится в названии этого, но я неТэги с именем "мастер", Это результат:git branch -a

* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/master

Есть идеи, что здесь может пойти не так? Я'Я использую git всего несколько месяцев, так что меня больше всего беспокоит, что эта неопределенность может помешать репо в будущем.

 CharlesB25 окт. 2012 г., 18:33
какая команда выдает предупреждение?
 VonC25 окт. 2012 г., 18:36
Был бы список возможныхмастер' упоминается вstackoverflow.com/a/12225704/6309 Помогите?git checkout heads/masterдолжен работать (без предупреждения)
 CB Bailey25 окт. 2012 г., 18:44
Пожалуйста, покажите вывод.git show-ref
 K-ballo15 янв. 2013 г., 23:07
 Tim02 нояб. 2012 г., 19:26
@CharlesBailey Извините за задержку здесь, но выводgit show-ref это куча вещей, которые нездесь не подходит Я считаю, что может быть уместно, что есть две строки, которые заканчиваются "мастер": ссылки / пульты / происхождение / мастер, ссылки / головы / мастер

Ответы на вопрос(5)

git fetch --prune

git pull origin branch-name

должен исправить вашу проблему.

У меня была похожая проблема (не основная), когда я создал ветку с тем же именем, что и тег.

Это помогло мне удалить тегhttps://stackoverflow.com/a/5480292/150953

git push --delete origin tagname

Как подробно в "Git: refname ''master неоднозначноэто означает, что, кромеheads/masterу вас есть другой мастер в одном из следующих пространств имен в репозитории git:

refs/ 
refs/tags/
refs/heads/
refs/remotes/
refs/remotes//HEAD

Или даже./как указано вМагнусаответ.

 Matt Klein07 сент. 2017 г., 17:41
Для меня это было вrefs/tags/, тогда спасибо!
 VonC08 окт. 2013 г., 16:29
@ nevermind верно. Я сделал это более заметным в моем ответе.
 nevermind08 окт. 2013 г., 16:26
или просто./ как упоминал Магнус. (это было в моем случае)
Решение Вопроса

Я обнаружил источник этого предупреждения гораздо раньше, когда неправильно выдалобновление-исх» команда. Если вы забыли указать полный путь refs /heads / mybranchname в первом аргументе, то будет создан файл .git / mybranchname, который позже приводит к этому предупреждению при попытке перейти в эту ветку.

Это решается простым удалением .git / mybranchname, например:

rm .git/master

И для справки, правильная форма для команды update-ref:

git update-ref refs/heads/mybranchname mytargetbranch

Дон»забытьссылки / главы» часть!

Кроме того, мой самый распространенный вариант использования update-ref - это просто ручное перемещение ветки, чтобы указать на другой коммит, который ямы нашли более простой синтаксис:

git branch -f myBranchToMove destinationBranchOrHash

Этот синтаксис проще для меня, потому что он неt требующий ошибок путь / refs / заголовки пути квалификатор.

 Dan Berindei20 июл. 2015 г., 12:43
git update-ref -d master также работает, как только вы это понимаетеs команда update-ref, которая создала дубликат ref.
 Ytsen de Boer05 февр. 2018 г., 12:28
Если вы хотите перемещать ветку только между коммитами, предпочтительнее удалить ветку (branch -d) и воссоздать ее на другом коммите (check--b). Это не требует возиться с рефери.
 John Alexander12 нояб. 2014 г., 20:17
Я сделал то же самое. Команда неЯ, кажется, ничего не делаю, поэтому я добавилссылки / главы» расстаться и нене понимаю, что он оставил остаток в каталоге .git.

Для дальнейшего использования у меня возникла та же проблема, и в итоге мне помогло описанное решение.Вот, В основном, когда вы получаетеGit: warning: refname 'xxx' is ambiguous предупреждение, вы можете использовать:git show-ref xxx проверить ссылки наxxx Разветвите и проверьте, какие из них имеют конфликт.

В моем сценарии это был тег с именемxxx и имя филиала с тем же именем. Тег был сделан по ошибке и удален с сервера, поэтому все, что мне нужно было сделать, это обновить мой локальный тег, чтобы он соответствовал серверу:git fetch -p -P, Эта команда подробно объясняетсяВот

Ваш ответ на вопрос