2012-10-17 16 views
36

Ich stolperte über zwei seltsame Zeichen am Ende eines git ls-Remote-Befehls und ich frage mich, was das bedeutet?Was bedeutet^{} in git?

0e4c39557ccb6789173c refs/tags/2011-11-04 
966f8df553f18c486820 refs/tags/2011-11-04^{} 

Wissen Sie zufällig, was das^{} bedeutet? Warum erscheint dieses Git-Tag auch doppelt?

Antwort

32

Die ^{} Notation wird in der gitrevisions Handbuch erläutert:

<rev>^{}, e.g. v0.99.8^{} 

Ein Suffix^durch eine leere Klammer Paar gefolgt bedeutet das Objekt ein Tag sein könnte, und dereferenzieren dem Tag rekursiv, bis eine nicht-tag Objekt wird gefunden.

In Ihrem Fall 0e4c39557ccb6789173c ist das Tag-Objekt und 966f8df553f18c486820 ist das Objekt (begehen), dass es letztlich dereferenziert.

Vom git show-ref Handbuch:

-d 
--dereference 

Dereference-Tags in als auch Objekt-IDs. Sie werden mit angehängten "^ {}" angezeigt.

+5

Eine ausführlichere Erklärung finden Sie in dieser doppelten Frage: http://stackoverflow.com/a/15472310/83284 – pedromanoel

3

Beachten Sie, dass git ls-remote einen neuen Filter mit Git 2.8 (März 2016) hat.

Siehe commit 99c08d4, commit ba5f28b, commit 80b17e5, commit 40a8852, commit 54813bd (18. Januar 2016) von Thomas Gummerer (tgummerer).
Vorgeschlagen von: pedro rijo (pedrorijo91).
(Verschmelzung durch Junio C Hamano -- gitster -- in commit bd6934a, 03. Feb 2016)

Das bedeutet, dass Sie nur die Tags mit

git ls-remote --refs 

nicht geschält Tags oder pseudorefs wie HEAD in der Ausgabe zeigen Sie zeigen kann.