Como excluir a referência git `refs / original / refs / heads / master`?


35

O que é isso na caixa redonda amarela?

captura de tela

Eu tentei git branch -D, git tag -dmas nenhum conseguiu. Então, como excluí-lo?


1
Por favor, considere alterar a resposta aceita pela resposta de Alexey Ten, que é altamente votada e correta ( git update-ref -d).
Jonathon Reinhart

Respostas:


11

Parece uma tag, portanto, o seguinte comando deve funcionar:

git tag -d refs/original/refs/heads/master

Mas, como você disse que não, basta excluir o arquivo do .gitdiretório. Na raiz do repositório, um comando como este o receberá:

rm .git/refs/tags/refs/original/refs/heads/master

O caminho pode ser um pouco diferente se o git-tagcomando falhar; portanto, você pode querer cd .git/refsencontrar a cabeça ofensora por tentativa e erro. A exclusão do arquivo removerá a referência do seu repositório local.


2
Não é uma marca, no entanto, eu achei isso como .git/refs/original/refs/heads/master.
Xiè Jìléi

1
Use em git update-refvez de manualmente alterar os internos do Git. Veja a resposta de Alexey.
Wchargin

100

Este comando deve funcionar

git update-ref -d refs/original/refs/heads/master

Isso funcionou para mim com o mesmo problema. Observe que a referência foi armazenada em um arquivo chamado .git / compact-refs. Se você abrir isso, poderá ver a linha com o SHA e a sequência "refs / original / refs / heads / master". Você provavelmente poderia excluir essa linha, mas eu usaria esse comando para estar seguro.
Matt N

14
+1: você sempre deve usar em git update-ref -dvez de apenas rmref - coisas ruins podem acontecer de outra maneira.
Callum Rogers

3
Esta deve ser a resposta aceita
Daniel Alder

1
@CallumRogers why?
wahnfrieden

6
@wahnfrieden porque o git poderia usar referências empacotadas e não haverá arquivo correspondente no refsdiretório #
Alexey Ten

17

Esta é uma ref. Normalmente criado por git filter-branch- é um ponteiro para onde seu ramo estava antes de você executar git filter-branch.

E para excluir qualquer ref, você sempre pode enviar nada a ele no repositório local:

git push . :refs/original/refs/heads/master

As outras respostas também cobriram muito bem outras maneiras de excluir.


1
"Empurrar nada" para excluir a referência localmente é muito inteligente.
precisa saber é o seguinte

Fez o meu dia. Eu tinha uma referência a um tag remoto que o controle remoto não existia mais. Este é o único comando que funcionou.
RW4
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.