我们可以用linkgit:git-tag[1]不带任何参数创建一个标签(tag)指定某个提交(commit):
$ git tag stable-1 1b2e1d63ff
这样,我们可以用 stable-1 作为提交(commit) "1b2e1d63ff" 的代称(refer)。
前面这样创建的是一个“轻量级标签",这种分支通常是从来不移动的。
如果你想为一个标签(tag)添加注释,或是为它添加一个签名(sign it cryptographically),那么我们就需要创建一个 ”标签对象"。
如果有 -a, -s 或是 -u <key-id> 中间的一个命令参数被指定,那么就会创建一个标签对象,并且需要一个标签消息(tag message)。 如果没有-m <msg> 或是 -F <file> 这些参数,那么就会启动一个编辑器来让用户输入标签消息(tag message)。
译者注:大家觉得这个标签消息是不是提交注释(commit comment)比较像。
当这样的一条命令执行后,一个新的对象被添加到 Git 对象库中,并且标签引用就指向了一个标签对象,而不是指向一个提交(commit)。这样做的好处就是:你可以为一个标签打处签名(sign),方便你以后来查验这是不是一个正确的提交(commit)。
下面是一个创建标签对象的例子:
$ git tag -a stable-1 1b2e1d63ff
标签对象可以指向任何对象,但是在通常情况下是一个提交(commit)。 (在 Linux 内核代码中,第一个标签对象是指向一个树对象(tree),而不是指向一个提交(commit))。
如果你配有 GPG key,那么你就很容易创建签名的标签。首先你要在你的_.git/config或_~.gitconfig里配好 key。
下面是示例:
[user] signingkey = <gpg-key-id>
你也可以用命令行来配置:
$ git config (--global) user.signingkey <gpg-key-id>
现在你可以直接用-s 参数来创“签名的标签”。
$ git tag -s stable-1 1b2e1d63ff
如果没有在配置文件中配 GPG key,你可以用-u 参数直接指定。
$ git tag -u <gpg-key-id> stable-1 1b2e1d63ff