tag

git tag 给历史记录中的某个重要的一点打上标签

如果你达到一个重要的阶段,并希望永远记住那个特别的提交快照,你可以使用 git tag 给它打上标签。 该 tag 命令基本上会给该特殊提交打上永久的书签,从而使你在将来能够用它与其他提交比较。 通常,你会在切取一个发布版本或者交付一些东西的时候打个标签。

比如说,我们想为我们的 Hello World 项目发布一个“1.0”版本。 我们可以用 git tag -a v1.0 命令给最新一次提交打上(HEAD)“v1.0”的标签。 -a 选项意为“创建一个带注解的标签”,从而使你为标签添加注解。绝大部分时候都会这么做的。 不用 -a 选项也可以执行的,但它不会记录这标签是啥时候打的,谁打的,也不会让你添加个标签的注解。 我推荐一直创建带注解的标签。

$ git tag -a v1.0

当你执行 git tag -a 命令时,Git 会打开你的编辑器,让你写一句标签注解,就像你给提交写注解一样。

现在,注意当我们执行 git log --decorate 时,我们可以看到我们的标签了:

$ 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

如果我们有新提交,该标签依然会待在该提交的边上,所以我们已经给那个特定快照永久打上标签,并且能够将它与未来的快照做比较。

不过我们并不需要给当前提交打标签。如果我们忘了给某个提交打标签,又将它发布了,我们可以给它追加标签。 在相同的命令末尾加上提交的 SHA,执行,就可以了。 例如,假设我们发布了提交 558151a(几个提交之前的事情了),但是那时候忘了给它打标签。 我们现在也可以:

$ 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
文章导航