Nur der Code
# Set the HEAD to the old commit that we want to tag
git checkout 9fceb02
# temporarily set the date to the date of the HEAD commit, and add the tag
GIT_COMMITTER_DATE="$(git show --format=%aD | head -1)" \
git tag -a v1.2 -m"v1.2"
# set HEAD back to whatever you want it to be
git checkout master
Einzelheiten
Die Antwort von @dkinzer erstellt Tags, deren Datum das aktuelle Datum ist (als Sie den git tag
Befehl ausgeführt haben), nicht das Datum des Commits. Die Git-Hilfe für tag
hat einen Abschnitt "On Backdating Tags", der besagt:
Wenn Sie einige Änderungen aus einem anderen VCS importiert haben und Tags für Hauptversionen Ihrer Arbeit hinzufügen möchten, ist es hilfreich, das Datum anzugeben, das in das Tag-Objekt eingebettet werden soll. Solche Daten im Tag-Objekt wirken sich beispielsweise auf die Reihenfolge der Tags in der Gitweb-Schnittstelle aus.
Um das in zukünftigen Tag-Objekten verwendete Datum festzulegen, legen Sie die Umgebungsvariable fest GIT_COMMITTER_DATE
(siehe die spätere Erörterung möglicher Werte; die häufigste Form ist "JJJJ-MM-TT HH: MM").
Zum Beispiel:
$ GIT_COMMITTER_DATE="2006-10-02 10:31" git tag -s v1.0.1
Die Seite "Wie man in Git taggt" zeigt uns, dass wir die Zeit des HEAD-Commits extrahieren können über:
git show --format=%aD | head -1
#=> Wed, 12 Feb 2014 12:36:47 -0700
Wir könnten das Datum eines bestimmten Commits extrahieren über:
GIT_COMMITTER_DATE="$(git show 9fceb02 --format=%aD | head -1)" \
git tag -a v1.2 9fceb02 -m "v1.2"
Anstatt das Festschreiben zweimal zu wiederholen, scheint es jedoch einfacher zu sein, den HEAD einfach in dieses Festschreiben zu ändern und es implizit in beiden Befehlen zu verwenden:
git checkout 9fceb02
GIT_COMMITTER_DATE="$(git show --format=%aD | head -1)" git tag -a v1.2 -m "v1.2"