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

142

Я новичок в Git, и мне кажется, что у меня слишком много одной ветки, если я выполню следующую команду:

warning: refname 'HEAD' is ambiguous.

Получаю следующий результат:

warning: refname 'HEAD' is ambiguous.
From github.com:dagda1/hornget
 * branch            master     -> FETCH_HEAD
warning: refname 'HEAD' is ambiguous.
warning: refname 'HEAD' is ambiguous.

Если я выполню git branch -a

Получаю следующее:

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

Меня смущает remotes/origin/HEAD -> origin/master.

Что это и как избавиться от неоднозначной ветки.

Я дошел до этого этапа, выполнив слияние, где, как мне кажется, я добавил неоднозначную ветвь.

dagda1
источник
11
Какую команду вы пытаетесь выполнить в первую очередь? Конечно, это не так,warning: refname 'HEAD' is ambiguous.
Бен Джеймс
1
remotes/origin/HEAD -> origin/masterне проблема: он просто показывает, какая ветвь удалена по умолчанию origin. Названная ветка HEADесть.
Якуб Наребски
3
Я думаю, вам нужно отредактировать вопрос, чтобы показать команду, которую вы пытаетесь выполнить :)
Крис
Чтобы воспроизвести это, запустите «git fetch origin HEAD: HEAD». По-видимому, он пытается объединить текущую ветвь с новой веткой, буквально называемой HEAD.
Brain2000,

Ответы:

226

Проблема в том, что у вас есть ветка с именем, HEADкоторая является абсолютно опасной, поскольку это символическое имя любой ветки, которая является текущей ветвью.

Переименуйте его:

git branch -m HEAD newbranch

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

( origin/HEADУдаленная ветка не проблема)

u0b34a0f6ae
источник
Это также может произойти, если у вас есть файл или каталог с тем же именем, что и ветка.
Мэтт Коннолли,
2
Хотя это origin/HEADможет не быть проблемой, если вы случайно создадите ветвь, которая называется origin/somebranchпроблемой (и приведет к такому же «неоднозначному» сообщению об ошибке). Когда вы пытаетесь выполнить извлечение из "какой-то ветки", вы получите извлечение из локальной (случайной) ветки, а не из удаленной. В этом случае я обнаружил, что предложение flickerfly отлично git branch -d origin/somebranchработает.
machineghost
Это исправило, спасибо. Стоит отметить, что ветка "HEAD" создается автоматически, а не мной. Он содержал одну фиксацию слияния, и мне не удалось вернуться к чистому состоянию с помощью reflog. Итак, я переименовал ветку, удалил ее, перенастроил мой локальный мастер "1 вперед" на origin / master, протолкнул без проблем
Юнус Недим Мехел
1
То же самое может произойти с тегами, а не только с ветками.
sebix
1
ха! Я работаю с роботами, у которых есть голова и есть ветка с именем head(в нижнем регистре).
orion elenzil 01
37

Кроме того, это приведет к удалению ветки, если она вам просто не нужна.

git branch -d HEAD

Используйте заглавную букву, -Dчтобы принудительно удалить:

git branch -D HEAD
Иосия
источник
3
но он все равно останется неоднозначным, есть ли способ очистить его?
RzR 05
28

Если вы создали тег с именем HEADusing ...

git tag HEAD

... вы можете просто удалить этот тег, используя:

git tag -d HEAD

См. Этот случай: kerneltrap.org/git-tag HEAD

Bengt
источник
Это происходит, когда вы по ошибке добавляете тег с именем HEAD, поэтому вам нужно удалить его, как предлагается здесь
user1610308
решает мою проблему! в моем репо нет ветки с именем HEAD, не знаю, как создается этот тег ..
mzoz
1

Это означает, что у вас есть ветка с именем «голова». У меня была такая же проблема, я решил, выполнив следующую команду.

git branch -d head
стеки
источник
1

Проверьте ссылки, доступные в вашем репозитории git. Вы увидите две HEAD в вашем репозитории. Это делает вашу ветку с refname HEAD неоднозначной.

git show-ref

Решение:

  • Переименовать ветку

    git branch -m HEAD <new_branch_name>
    

    ИЛИ

  • Удалить ветку

    git branch -d HEAD
    
Даршан
источник