Come eliminare il riferimento git `refs / original / refs / heads / master`?


33

Cosa c'è nella scatola rotonda gialla?

immagine dello schermo

Ci ho provato git branch -D, git tag -dma nessuno ci è riuscito. Quindi come eliminarlo?


Ti preghiamo di considerare di cambiare la risposta accettata alla risposta di Alexey Ten che è altamente votata e corretta ( git update-ref -d).
Jonathon Reinhart,

Risposte:


9

Sembra un tag, quindi il seguente comando dovrebbe funzionare:

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

Ma, poiché hai detto che non lo è, puoi semplicemente eliminare il file dalla .gitdirectory. Dalla radice del repository, un comando come questo lo otterrà:

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

Il percorso potrebbe essere leggermente diverso se il git-tagcomando non è riuscito, quindi potresti voler cd .git/refstrovare la testa offensiva per tentativi ed errori. L'eliminazione del file rimuoverà il riferimento dal repository locale.


1
Non è un tag, tuttavia, l'ho trovato come .git/refs/original/refs/heads/master.
Xiè Jìléi,

Usa git update-refpiuttosto che mutare manualmente gli interni di Git. Vedi la risposta di Alexey.
mercoledì

96

Questo comando dovrebbe funzionare

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

Questo ha funzionato per me con lo stesso problema. Si noti che il riferimento è stato memorizzato in un file chiamato .git / pacchetto-refs. Se lo apri puoi vedere la linea con SHA e la stringa "refs / original / refs / heads / master". Probabilmente potresti cancellare quella riga, ma userei questo comando per sicurezza.
Matt N

13
+1: dovresti sempre usare git update-ref -dinvece di usare solo rmil ref - cose brutte possono succedere altrimenti.
Callum Rogers,

2
Questa dovrebbe essere la risposta accettata
Daniel Alder,

1
@CallumRogers perché?
Wahnfrieden,

5
@wahnfrieden perché git potrebbe usare ref compressi e non ci sarà nessun file corrispondente nella refsdirectory
Alexey Ten

16

Questo è un riferimento. Normalmente creato da git filter-branch- è un puntatore a dove si trovava il tuo ramo prima di correre git filter-branch.

E per eliminare qualsiasi riferimento, non è mai possibile inviare nulla ad esso nel repository locale:

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

Le altre risposte hanno riguardato piuttosto bene altri modi di eliminazione.


1
"Spingere nulla" per eliminare il riferimento localmente è molto intelligente.
40XUserNotFound

Ha reso la mia giornata. Ho avuto un riferimento a un tag remoto che il telecomando non esisteva più. Questo è l'unico comando che ha funzionato.
RW4
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.