Vi er nye i git, og jeg ønsker å sette en tag i begynnelsen av repositoryet vårt. Produksjonskoden vår er den samme som i begynnelsen av repositoryet, men vi har gjort endringer siden den gang. En tag i begynnelsen vil gjøre det mulig for oss å "rulle tilbake" produksjonen til en kjent, stabil tilstand.
Så hvordan legger man til en tagg i en vilkårlig, eldre commit?
Eksempel:
git tag -a v1.2 9fceb02 -m "Message here"
Hvor 9fceb02
er begynnelsen av commit-id-en.
Du kan deretter pushe taggen ved hjelp av git push origin v1.2
.
Du kan bruke git log
for å vise alle commit-id-ene i den aktuelle grenen.
Det finnes også et godt kapittel om tagging i Pro Git-boken.
Advarsel: Dette oppretter tagger med aktuell dato (og det er denne verdien som vises på for eksempel en GitHub-utgivelsesside). Hvis du vil at taggen skal dateres med commit-datoen, kan du se på et annet svar.
# 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
Svaret fra @dkinzer oppretter tagger som har dagens dato (når du kjørte kommandoen git tag
), ikke datoen for commit. Git-hjelpen for tag
har en seksjon _"On Backdating Tags"_ som sier:
_Hvis du har importert endringer fra en annen VCS og ønsker å legge til tagger for større utgivelser av arbeidet ditt, er det nyttig å kunne angi datoen som skal legges inn i tag-objektet; slike data i tag-objektet påvirker for eksempel rekkefølgen på taggene i gitweb-grensesnittet.
For å angi datoen som skal brukes i fremtidige tag-objekter, angir du miljøvariabelen GIT_COMMITTER_DATE
(se senere diskusjon om mulige verdier; den vanligste formen er "YYYYY-MM-DD HH:MM").
For eksempel:
$ GIT_COMMITTER_DATE="2006-10-02 10:31" git tag -s v1.0.1
Siden "How to Tag in Git" viser oss at vi kan hente ut tidspunktet for HEAD commit via:
git show --format=%aD | head -1
#=> Wed, 12 Feb 2014 12:36:47 -0700
Vi kan hente ut datoen for en bestemt commit via:
GIT_COMMITTER_DATE="$(git show 9fceb02 --format=%aD | head -1)" \
git tag -a v1.2 9fceb02 -m "v1.2"
Men i stedet for å gjenta commit to ganger, virker det enklere å bare endre HEAD til denne commit og bruke den implisitt i begge kommandoene:
git checkout 9fceb02
GIT_COMMITTER_DATE="$(git show --format=%aD | head -1)" git tag -a v1.2 -m "v1.2"
Den enkleste måten å gjøre dette på er
git tag v1.0.0 f4ba1fc
.
hvor f4ba1fc
er begynnelsen på hashen til commitet du vil tagge, og v1.0.0
er versjonen du vil tagge.