Просто Кодекс
# 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 і хочете додати теги для основних випусків вашої роботи, корисно мати змогу вказати дату вбудовування всередині об’єкта тегів; такі дані в об’єкті тегів впливають, наприклад, на впорядкування тегів в інтерфейсі gitweb.
Для встановлення дати, що використовується у майбутніх об’єктах тегів, встановіть змінну середовища GIT_COMMITTER_DATE
(див. Подальше обговорення можливих значень; найпоширенішою формою є "РРРР-MM-DD HH: MM").
Наприклад:
$ 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"