Tylko kod
# 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
Detale
Odpowiedź @dkinzer tworzy tagi, których data jest bieżącą datą (po uruchomieniu git tag
polecenia), a nie datą zatwierdzenia. Pomoc Git dla tag
zawiera sekcję „O tagach backdating”, która mówi:
Jeśli zaimportowałeś jakieś zmiany z innego VCS i chciałbyś dodać tagi do głównych wydań swojej pracy, przydatna jest możliwość określenia daty do umieszczenia wewnątrz obiektu tagu; takie dane w obiekcie znacznika wpływają na przykład na kolejność znaczników w interfejsie gitweb.
Aby ustawić datę używaną w przyszłych obiektach znaczników, ustaw zmienną środowiskową GIT_COMMITTER_DATE
(zobacz późniejsze omówienie możliwych wartości; najczęstszą formą jest „RRRR-MM-DD GG: MM”).
Na przykład:
$ GIT_COMMITTER_DATE="2006-10-02 10:31" git tag -s v1.0.1
Strona „How to Tag in Git” pokazuje nam, że możemy wyodrębnić czas zatwierdzenia HEAD poprzez:
git show --format=%aD | head -1
#=> Wed, 12 Feb 2014 12:36:47 -0700
Możemy wyodrębnić datę konkretnego zatwierdzenia poprzez:
GIT_COMMITTER_DATE="$(git show 9fceb02 --format=%aD | head -1)" \
git tag -a v1.2 9fceb02 -m "v1.2"
Jednak zamiast powtarzać zatwierdzenie dwa razy, łatwiej jest zmienić HEAD na to zatwierdzenie i użyć go domyślnie w obu poleceniach:
git checkout 9fceb02
GIT_COMMITTER_DATE="$(git show --format=%aD | head -1)" git tag -a v1.2 -m "v1.2"