Просто код
# 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
подробности
Ответ @dkinzer создает теги, дата которых является текущей датой (когда вы выполнили git tag
команду), а не датой фиксации. В справке Git tag
есть раздел «О тегах задним числом», который гласит:
Если вы импортировали некоторые изменения из другой VCS и хотели бы добавить теги для основных выпусков своей работы, полезно иметь возможность указать дату для вставки внутрь объекта тега; такие данные в объекте tag влияют, например, на порядок тегов в интерфейсе gitweb.
Чтобы установить дату, используемую в будущих объектах тегов, установите переменную среды GIT_COMMITTER_DATE
(см. Последующее обсуждение возможных значений; наиболее распространенная форма - «ГГГГ-ММ-ДД ЧЧ: ММ»).
Например:
$ GIT_COMMITTER_DATE="2006-10-02 10:31" git tag -s v1.0.1
Страница «Как пометить в Git» показывает нам, что мы можем извлечь время фиксации HEAD через:
git show --format=%aD | head -1
#=> Wed, 12 Feb 2014 12:36:47 -0700
Мы могли бы извлечь дату конкретного коммита через:
GIT_COMMITTER_DATE="$(git show 9fceb02 --format=%aD | head -1)" \
git tag -a v1.2 9fceb02 -m "v1.2"
Однако вместо того, чтобы повторять коммит дважды, кажется, проще просто изменить HEAD на этот коммит и неявно использовать его в обеих командах:
git checkout 9fceb02
GIT_COMMITTER_DATE="$(git show --format=%aD | head -1)" git tag -a v1.2 -m "v1.2"