Was passiert mit Git-tags verweist auf einen commit entfernt
Sagen, dass ich Folgendes tun:
- Erstellen Zweig
X
- Erstellen von Tags
t
(ZweigX
) - Push
- Entfernen Zweig
X
Was passiert, zu-tag t
? ist es nur schweben da ist? ist es als Müll?
Sollte ich entfernen Sie alle tags zeigen auf Zweig entfernen, bevor die Branche selbst?
Referenz
Vom Git Basics Tagging:
Git verwendet zwei Arten von tags: leichte und kommentiert werden. Ein
lightweight-tag ist sehr viel wie ein Zweig, der ändert sich nicht – es ist
nur ein Zeiger auf einen bestimmten commit.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Lassen Sie uns sagen Sie, dass Sie Zweig
x
aus einem commitE
und dann tagged Sie, dass commit tagt
. E. g.Wenn Sie entfernen Zweig
x
nichts passiert, zu-tagt
.Den tag noch Punkte zu Begehen
E
.Nein, da der commit noch auf die verwiesen wird von tag
t
.Nicht entfernen verpflichtet. Sie entfernen Zeiger auf commits und wenn verpflichtet sind keine mehr referenziert git wird Müll sammeln, Sie einige Tage (je nach Konfiguration).
Sehen
git gc
Selbst wenn Sie entfernt alle normalen refs, wie Zweige und tags der commits, die noch referenziert werden, in das reflog für einige Zeit, und Sie können auf Sie zugreifen, z.B. erstellen Sie einen Zweig wieder, taggen oder cherry-pick und so weiter.
Können Sie sehen, das reflog mit
git reflog
. Werfen Sie auch einen Blick aufgc.reflogExpireUnreachable
undgc.reflogExpire
Bin ich nicht an der spezifischen Szenario, in den OP ' s Frage, sondern um die Frage im Titel: Was passiert mit einem git tag zeigt auf eine entfernte Begehen?
Wenn Sie irgendwie haben es geschafft, zu entfernen, zu Begehen, auf die verwiesen wurde von einem tag (nicht sicher, wie man das tun könnte - siehe René Link ' s Antwort), der tag würde nur ein Zeiger auf einen ungültigen Begehen (Sie können dies testen, indem Sie manuell Bearbeiten Sie ein tag aus .git/refs/tags).
In einem solchen Fall wird die Ausgabe von
git tag
wäre so etwas wie dieses:Kasse würde auch produzieren Fehler:
Also die Antwort auf die Frage "Was passiert mit einem git-tag, das auf ein entfernt zu Begehen?" ist... nichts. Sie wird dort bleiben, verweist auf eine ungültige Referenz, bis Sie ihn entfernen mit
git tag -d <tag>
.Löschen Sie einen Zweig, der einem tag erstellt wurde, hat dies keine Auswirkungen auf den tag. Einen tag nicht über einen Verweis von wo aus der es erstellt wurde.
Wenn du mehr wissen möchtest über tags vs. äste würde ich empfehlen, sich auf diese Frage: Wie ist ein tag unterscheidet sich von einem ast? Was sollte ich hier?