## git tag 給歷史記錄中的某個重要的一點打上標(biāo)簽
如果你達(dá)到一個重要的階段,并希望永遠(yuǎn)記住那個特別的提交快照,你可以使用?`git tag`?給它打上標(biāo)簽。 該?`tag`?命令基本上會給該特殊提交打上永久的書簽,從而使你在將來能夠用它與其他提交比較。 通常,你會在切取一個發(fā)布版本或者交付一些東西的時候打個標(biāo)簽。
比如說,我們想為我們的 Hello World 項目發(fā)布一個“1.0”版本。 我們可以用?`git tag -a v1.0`?命令給最新一次提交打上(`HEAD`)“v1.0”的標(biāo)簽。?`-a`?選項意為“創(chuàng)建一個帶注解的標(biāo)簽”,從而使你為標(biāo)簽添加注解。絕大部分時候都會這么做的。 不用?`-a`?選項也可以執(zhí)行的,但它不會記錄這標(biāo)簽是啥時候打的,誰打的,也不會讓你添加個標(biāo)簽的注解。 我推薦一直創(chuàng)建帶注解的標(biāo)簽。
~~~
$ git tag -a v1.0
~~~
當(dāng)你執(zhí)行?`git tag -a`?命令時,Git 會打開你的編輯器,讓你寫一句標(biāo)簽注解,就像你給提交寫注解一樣。
現(xiàn)在,注意當(dāng)我們執(zhí)行?`git log --decorate`?時,我們可以看到我們的標(biāo)簽了:
~~~
$ git log --oneline --decorate --graph
* 594f90b (HEAD, tag: v1.0, master) reverted to old class name
* 8d585ea Merge branch 'fix_readme'
|\
| * 3ac015d (fix_readme) fixed readme title
* | 3cbb6aa fixed readme title differently
|/
* 558151a Merge branch 'change_class'
|\
| * 3467b0a changed the class name
* | b7ae93b added from ruby
|/
* 17f4acf first commit
~~~
如果我們有新提交,該標(biāo)簽依然會待在該提交的邊上,所以我們已經(jīng)給那個特定快照永久打上標(biāo)簽,并且能夠?qū)⑺c未來的快照做比較。
不過我們并不需要給當(dāng)前提交打標(biāo)簽。如果我們忘了給某個提交打標(biāo)簽,又將它發(fā)布了,我們可以給它追加標(biāo)簽。 在相同的命令末尾加上提交的 SHA,執(zhí)行,就可以了。 例如,假設(shè)我們發(fā)布了提交?`558151a`(幾個提交之前的事情了),但是那時候忘了給它打標(biāo)簽。 我們現(xiàn)在也可以:
~~~
$ git tag -a v0.9 558151a
$ git log --oneline --decorate --graph
* 594f90b (HEAD, tag: v1.0, master) reverted to old class name
* 8d585ea Merge branch 'fix_readme'
|\
| * 3ac015d (fix_readme) fixed readme title
* | 3cbb6aa fixed readme title differently
|/
* 558151a (tag: v0.9) Merge branch 'change_class'
|\
| * 3467b0a changed the class name
* | b7ae93b added from ruby
|/
* 17f4acf first commit
~~~
