попередження: перейменування "HEAD" неоднозначне


139

Я новачок у 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.

Що це таке і як можна позбутися від неоднозначної гілки.

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


11
Яку першу команду ви намагаєтеся виконати? Напевно, це не такwarning: refname 'HEAD' is ambiguous.
Бен Джеймс

1
remotes/origin/HEAD -> origin/masterце не проблема: він просто показує, яка гілка за замовчуванням у віддаленому origin. Гілка названа HEADє.
Якуб Нарбський

3
Я думаю, вам потрібно відредагувати питання, щоб показати команду, де намагаєтесь виконати :)
Kris

Щоб відтворити це, запустіть "git fetch origin HEAD: HEAD". Мабуть, вона намагається об'єднати поточну гілку в нову гілку, що називається, буквально, HEAD.
Brain2000

Відповіді:


224

Проблема полягає в тому, що у вас є гілка, яку називають HEADабсолютно небезпечною, оскільки це символічна назва для будь-якої гілки - поточна гілка.

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

git branch -m HEAD newbranch

тоді ви можете його вивчити і вирішити, що робити (видалити або зберегти під описовою назвою гілки)

( origin/HEADВіддалене відділення не є проблемою)


Це також може статися, якщо у вас є файл або каталог з тим самим іменем, що і гілка.
Метт Конноллі

2
Хоча це origin/HEADможе не бути проблемою, якщо ви випадково створили гілку, яка називається origin/somebranchIS проблема (і призведе до того ж "неоднозначного" повідомлення про помилку). Якщо ви спробуєте витягнути з "деякої галузі", ви закінчите витягувати з місцевої (випадкової) гілки, а не віддаленої. У цьому випадку я виявив, що пропозиція мерехтіння робити git branch -d origin/somebranchчудово.
machineghost

Це виправило, спасибі. Варто зазначити, що відділення "HEAD" створюється автоматично, а не я. Він містив єдину комісію злиття, і я не зміг повернутися до чистого стану за допомогою рефлог. Отож, я перейменував гілку, видалив її, повернув місцевому майстру "1 вперед" на походження / майстра, без проблем натиснув
Юнус Недім Мехель

1
Те саме може трапитися і з тегами, не тільки з гілками.
sebix

1
га! Я працюю з роботами, які мають голову і створили гілку з назвою head(малі регістри).
orion elenzil

36

Крім того, це відділення видалить, якщо ви просто цього не хочете.

git branch -d HEAD

Використовуйте капітал, -Dщоб примусити видалення:

git branch -D HEAD

3
але це все одно залишатиметься неоднозначним, чи є спосіб його очистити?
RzR

27

Якщо ви створили тег, названий HEADза допомогою ...

git tag HEAD

... ви можете просто видалити цей тег, використовуючи:

git tag -d HEAD

Дивіться цей випадок: kerneltrap.org/git-tag HEAD


Це трапляється, коли ви додаєте тег із іменем HEAD помилково, тому його потрібно видалити, як тут запропоновано
user1610308

1

Це означає, що у вас є відділення з назвою "голова". У мене було те саме питання, що я вирішив, виконавши наступну команду.

git branch -d head

1

Перевірте посилання, наявні у вашому сховищі git. Ви будете спостерігати два HEAD у вашому сховищі. Це робить вашу філію з перейменуванням HEAD неоднозначною.

git show-ref

Рішення:

  • Перейменуйте відділення

    git branch -m HEAD <new_branch_name>
    

    АБО

  • Видалити гілку

    git branch -d HEAD
    
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.