ostrzeżenie: nazwa odniesienia „HEAD” jest niejednoznaczna

139

Jestem nowy w Git i wydaje mi się, że mam jedną gałąź za dużo, jeśli wykonam następujące polecenie:

warning: refname 'HEAD' is ambiguous.

Otrzymuję następujący wynik:

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

Jeśli wykonam git branch -a

Otrzymuję następujące informacje:

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

Jestem zdezorientowany przez remotes/origin/HEAD -> origin/master.

Co to jest i jak pozbyć się niejednoznacznej gałęzi.

Dotarłem do tego etapu, wykonując scalanie, w którym myślę, że dodałem niejednoznaczną gałąź.

dagda1
źródło
11
Jakie jest pierwsze polecenie, które próbujesz wykonać? Z pewnością tak nie jestwarning: refname 'HEAD' is ambiguous.
Ben James
1
remotes/origin/HEAD -> origin/masternie stanowi problemu: po prostu pokazuje, która gałąź jest domyślna w zdalnym origin. Nazwa gałęzi HEADto.
Jakub Narębski
3
Myślę, że musisz edytować pytanie, aby pokazać polecenie, gdzie próbujesz wykonać :)
Kris
Aby to odtworzyć, uruchom polecenie „git fetch origin HEAD: HEAD”. Najwyraźniej próbuje scalić bieżącą gałąź z nową gałęzią o nazwie, dosłownie, HEAD.
Brain2000

Odpowiedzi:

224

Problem polega na tym, że masz gałąź o nazwie, HEADktóra jest absolutnie niebezpieczna, ponieważ jest to symboliczna nazwa każdej gałęzi, która jest gałęzią bieżącą .

Zmień nazwę:

git branch -m HEAD newbranch

następnie możesz go zbadać i zdecydować, co zrobić (usunąć lub zapisać pod opisową nazwą gałęzi)

( origin/HEADZdalna gałąź nie stanowi problemu)

u0b34a0f6ae
źródło
Może się to również zdarzyć, jeśli masz plik lub katalog o tej samej nazwie co gałąź.
Matt Connolly,
2
Chociaż origin/HEADmoże nie być problemem, jeśli przypadkowo utworzysz gałąź nazywaną origin/somebranchto jest problemem (i spowoduje to ten sam „niejednoznaczny” komunikat o błędzie). Kiedy spróbujesz wyciągnąć z „jakiejś gałęzi”, skończysz ciągnąć z lokalnej (przypadkowej) gałęzi, a nie z pilota. W takim razie stwierdziłem, że sugestia flickerfly, by robić git branch -d origin/somebranchdziała świetnie.
machineghost
To rozwiązało problem, dzięki. Warto zauważyć, że gałąź "HEAD" jest tworzona automatycznie, a nie przeze mnie. Zawierał pojedyncze zatwierdzenie scalania i nie udało mi się powrócić do czystego stanu za pomocą reflog. Więc zmieniłem nazwę gałęzi, usunąłem go, zmieniłem bazę mojego lokalnego mastera „1 z przodu” na początek / wzorzec, pchnąłem bez problemu
Yunus Nedim Mehel
1
To samo może się zdarzyć w przypadku tagów, a nie tylko gałęzi.
sebix
1
hah! Pracuję z robotami, które mają głowę i utworzyły gałąź nazwaną head(małymi literami).
orion elenzil
36

Spowoduje to również usunięcie gałęzi, jeśli po prostu jej nie chcesz.

git branch -d HEAD

Użyj kapitału, -Daby wymusić usunięcie:

git branch -D HEAD
Josiah
źródło
3
ale nadal pozostanie niejasny, czy istnieje sposób, aby go oczyścić?
RzR
27

Jeśli utworzyłeś tag o nazwie HEADprzy użyciu ...

git tag HEAD

... możesz po prostu usunąć ten tag za pomocą:

git tag -d HEAD

Zobacz ten przypadek: kerneltrap.org/git-tag HEAD

Bengt
źródło
Dzieje się tak, gdy przez pomyłkę dodasz tag z nazwą HEAD, więc musisz go usunąć zgodnie z sugestią tutaj
user1610308
1

Oznacza to, że masz gałąź o nazwie „głowa”. Miałem ten sam problem, rozwiązałem, wykonując następujące polecenie.

git branch -d head
stacksonstacksonstacks
źródło
1

Sprawdź referencje dostępne w repozytorium git. Zaobserwujesz dwa HEAD w swoim repozytorium. To sprawia, że ​​twoja gałąź z refname HEAD jest niejednoznaczna.

git show-ref

Rozwiązanie:

  • Zmień nazwę gałęzi

    git branch -m HEAD <new_branch_name>
    

    LUB

  • Usuń gałąź

    git branch -d HEAD
    
Darszan
źródło