Wenn ich die aktuelle Übertragung markieren möchte. Ich weiß, dass beide der folgenden Befehlszeilen funktionieren:
git tag <tagname>
y
git tag -a <tagname> -m '<message>'
Worin besteht der Unterschied zwischen diesen Befehlen?
Wenn ich die aktuelle Übertragung markieren möchte. Ich weiß, dass beide der folgenden Befehlszeilen funktionieren:
git tag <tagname>
y
git tag -a <tagname> -m '<message>'
Worin besteht der Unterschied zwischen diesen Befehlen?
Der Unterschied zwischen den beiden Befehlen besteht darin, dass der eine eine Tag-Meldung liefert, der andere nicht. Ein kommentiertes Tag hat eine Nachricht, die mit git-show(1) angezeigt werden kann, während ein Tag ohne Anmerkungen nur ein benannter Zeiger auf eine Übertragung ist.
Nach Angaben der Dokumentation : "Um ein leichtgewichtiges Tag zu erstellen, geben Sie keine der Optionen -a, -s oder -m an, sondern nur einen Tag-Namen". Es gibt auch einige verschiedene Optionen, um eine Nachricht auf kommentierte Tags zu schreiben:
git tag <tagname>
erstellt Git ein Tag in der aktuellen Revision, fordert Sie aber nicht zur Eingabe einer Anmerkung auf. Das Tag wird ohne eine Nachricht erstellt (dies ist ein leichtes Tag).git tag -a <tagname>
wird Git Sie zur Eingabe einer Anmerkung auffordern, es sei denn, Sie haben auch die Option -m verwendet, um eine Nachricht zu übermitteln.git tag -a -m <msg> <tagname>
markiert Git den Commit und versieht ihn mit der angegebenen Nachricht.git tag -m <msg> <tagname>
verhält sich Git so, als hätten Sie das Flag -a für Annotation übergeben und verwendet die angegebene Nachricht.Im Grunde genommen geht es nur darum, ob das Tag mit einer Anmerkung und anderen Informationen versehen werden soll oder nicht.
Verschieben Sie kommentierte Tags, halten Sie leichtgewichtige Tags lokal
man git-tag
dit :
Kommentierte Tags sind für die Veröffentlichung gedacht, während leichtgewichtige Tags für private oder temporäre Objektkennzeichnungen gedacht sind.
Und bestimmte Verhaltensweisen unterscheiden sich so voneinander, dass diese Empfehlung nützlich ist, z. B:
kommentierte Tags können eine andere Nachricht, einen anderen Ersteller und ein anderes Datum enthalten als die Übertragung, auf die sie verweisen. Sie können sie also verwenden, um eine Version zu beschreiben, ohne einen Release-Commit zu machen.
Leichtgewichtige Tags haben diese zusätzlichen Informationen nicht und brauchen sie auch nicht, da Sie sie nur für die eigene Entwicklung verwenden werden.
git push --follow-tags wird nur kommentierte Tags verschieben
git describe
ohne Kommandozeilenoptionen sieht nur kommentierte Tags
Interne Unterschiede
sowohl leichtgewichtige als auch kommentierte Tags sind eine Datei unter .git/refs/tags
die ein SHA-1 enthält
für leichtgewichtige Tags verweist das SHA-1 direkt auf eine Übertragung:
git tag light
cat .git/refs/tags/light
gibt dasselbe aus wie das SHA-1 des HEAD.
Kein Wunder also, dass sie keine anderen Metadaten enthalten können.
annotierte Tags verweisen auf ein Tag-Objekt in der Objektdatenbank.
git tag -as -m msg annot
cat .git/refs/tags/annot
enthält das SHA des kommentierten Tag-Objekts:
c1d7720e99f9dd1d1c8aee625fd6ce09b3a81fef
und dann können wir seinen Inhalt mit bekommen:
git cat-file -p c1d7720e99f9dd1d1c8aee625fd6ce09b3a81fef
Musterausgabe:
object 4284c41353e51a07e4ed4192ad2e9eaada9c059f
type commit
tag annot
tagger Ciro Santilli <your@mail.com> 1411478848 +0200
msg
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
<YOUR PGP SIGNATURE>
-----END PGP SIGNAT
Und so enthält sie zusätzliche Metadaten. Wie wir in der Ausgabe sehen können, sind die Metadatenfelder:
Eine ausführlichere Analyse des Formats finden Sie unter: Was ist das Format eines Git-Tag-Objekts und wie berechnet man dessen SHA?
Boni
Feststellen, ob ein Tag mit Anmerkungen versehen ist:
git cat-file -t tag
Ausgänge
commit
für Leichtgewichte, da es kein Tag-Objekt gibt, verweist es direkt auf die Übergabetag
für "annotated", da es in diesem Fall ein Tag-Objekt gibtLe site groß Unterschied ist perfekt erklärt aquí .
Im Grunde genommen, leichte Anhänger sind lediglich Verweise auf bestimmte Commits. Es werden keine weiteren Informationen gespeichert auf der anderen Seite, kommentierte Tags sind regelmäßige Objekte die einen Autor und ein Datum haben und referenziert werden können, weil sie einen eigenen SHA-Schlüssel haben.
Wenn das Wissen die getaggt was y wenn für Sie relevant ist, dann verwenden Sie kommentierte Tags. Wenn Sie nur einen bestimmten Punkt in Ihrer Entwicklung markieren wollen Egal, wer und wann das getan hat, leichte Etiketten sind gut genug.
Normalerweise würde man sich für kommentierte Tags entscheiden, aber das hängt wirklich vom Git-Master des Projekts ab.
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.