Wie lösche ich die Git-Referenz "refs / original / refs / heads / master"?

35

Was ist das in der gelben runden Schachtel?

Bildschirmfoto

Ich habe es versucht git branch -D, git tag -daber keiner hat es geschafft. Also, wie man es löscht?

Xiè Jìléi
quelle
1
Bitte überlegen Sie, die akzeptierte Antwort in Alexey Tens Antwort zu ändern, die hoch bewertet und korrekt ist ( git update-ref -d).
Jonathon Reinhart

Antworten:

11

Es sieht aus wie ein Tag, daher sollte der folgende Befehl funktionieren:

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

Da dies jedoch nicht der Fall ist, können Sie die Datei einfach aus dem .gitVerzeichnis löschen . Ein Befehl wie dieser aus dem Repository-Stammverzeichnis ruft Folgendes ab:

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

Der Pfad kann geringfügig abweichen, wenn der git-tagBefehl fehlgeschlagen ist. Möglicherweise möchten cd .git/refsSie den fehlerhaften Kopf durch Ausprobieren finden. Durch Löschen der Datei wird der Verweis aus Ihrem lokalen Repository entfernt.

Stephen Jennings
quelle
2
Es ist kein Tag, aber ich habe es als gefunden .git/refs/original/refs/heads/master.
Xiè Jìléi
1
Verwenden Sie git update-refInterna von Git, anstatt sie manuell zu mutieren. Siehe Alexeys Antwort.
wchargin
100

Dieser Befehl sollte funktionieren

git update-ref -d refs/original/refs/heads/master
Alexey Ten
quelle
Das hat bei mir mit dem gleichen Problem geklappt. Beachten Sie, dass die Referenz in einer Datei mit dem Namen .git / packing-refs gespeichert wurde. Wenn Sie das öffnen, sehen Sie die Zeile mit dem SHA und der Zeichenfolge "refs / original / refs / heads / master". Sie könnten diese Zeile wahrscheinlich löschen, aber ich würde diesen Befehl verwenden, um sicher zu sein.
Matt N
14
+1: Sie sollten immer verwenden, git update-ref -danstatt nur rmdie Referenz zu verwenden - andernfalls kann etwas passieren.
Callum Rogers
3
Dies sollte die akzeptierte Antwort sein
Daniel Alder
1
@ CallumRogers warum?
Wahnfrieden
6
@wahnfrieden weil git gepackte refs verwenden könnte und es keine entsprechende Datei im refsVerzeichnis gibt
Alexey Ten
17

Dies ist ein Hinweis. Normalerweise erstellt von git filter-branch- Dies ist ein Zeiger auf die Position Ihres Zweigs vor der Ausführung git filter-branch.

Und um einen Verweis zu löschen , können Sie im lokalen Repository immer nichts darauf pushen:

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

Die anderen Antworten deckten auch andere Arten des Löschens ziemlich gut ab.

Chutz
quelle
1
"Nichts drücken", um die Referenz lokal zu löschen, ist sehr clever.
40XUserNotFound
Meinen Tag gerettet. Ich hatte einen Verweis auf ein Remote-Tag, das es nicht mehr gab. Dies ist der einzige Befehl, der funktioniert hat.
RW4