Git TAG的使用

Git 可以对某一时间点上的版本打上标签。作用是标记一个点为版本号,如 V1.0.0,V1.0.1等等,在发布版本的时候,经常这么做。

列出现有标签

$ git tag //列出仓库内所有的标签

显示的标签按字母顺序排列,所以标签的先后并不表示重要程度的轻重。
我们可以用特定的搜索模式列出符合条件的标签。在 Git 自身项目仓库中,有着超过 240 个标签,如果你只对 1.4.2 系列的版本感兴趣,可以运行下面的命令:

$ git tag -l 'v1.4.2.*'
v1.4.2.1
v1.4.2.2
v1.4.2.3
v1.4.2.4

打标签

$ git tag -a 1.0.0 -m "Release version 1.0.0"

如果要添加详细注释,可以不加”-m”参数,这样执行git tag -a时会进入编辑器添加注释。
打标签的操作发生在我们commit修改到本地仓库之后。完整的例子:

$ git add .
$ git commit -m “fixed some bugs”
$ git tag -a 1.0.1 -m “Release version 1.0.1

提交标签到远程服务器上

$ git push origin master
$ git push origin --tags
–tags参数表示提交所有tag至服务器端,普通的git push origin master操作不会推送标签到服务器端。如果要推送单独的一个标签到服务器,推送的时候直接加上标签的名字:
$ git push origin v1.0.0

可以使用 git show 命令查看相应标签的版本信息,并连同显示打标签时的提交对象。

$ git show v1.0.0
tag v1.0.0
Tagger: yuelengloulan <yuelengloulan@gmail.com>
Date:   Sat May 20 02:13:25 2017 +0800

first tag on master

commit 02059709034621ef9dd329ac024dfe5705cd566d
Author: yuelengloulan <yuelengloulan@gmail.com>
Date:   Sat May 20 02:06:12 2017 +0800

    first create file

diff --git a/myfile.txt b/myfile.txt
new file mode 100644
index 0000000..29cd67d
--- /dev/null
+++ b/myfile.txt
@@ -0,0 +1 @@
+first my file

我们可以看到在提交对象信息上面,列出了此标签的提交者和提交时间,以及相应的标签说明。

从远程服务器同步标签

  • 克隆仓库会将仓库内所有标签同步下来
$ git clone reponame
  • 拉取远程修改
$ git fetch origin --tags 

执行完git fetch执行git tag会看到远程标签已经被拉取到本地。

删除标签的命令

  • 删除本地标签
$ git tag -d v1.0.2
  • 删除远端服务器的标签
$ git push origin :refs/tags/v1.0.2

切换到标签

$ git checkout tagname

执行完切换之后,Git提示进入头指针分离状态

含附注的标签

创建一个含附注类型的标签非常简单,用 -a (译注:取 annotated 的首字母)指定标签名字即可:

$ git tag -a v1.0.2 -m 'Release Version 1.0.2'
$ git tag
v1.0.0
v1.0.1
v1.0.2

而 -m 选项则指定了对应的标签说明,Git 会将此说明一同保存在标签对象中。如果没有给出该选项,Git 会启动文本编辑软件供你输入标签说明。

轻量级标签

轻量级标签实际上就是一个保存着对应提交对象的校验和信息的文件。要创建这样的标签,一个 -a,-s 或 -m 选项都不用,直接给出标签名字即可:

$ git tag v1.0.3-lw
$ git tag
v1.0.0
v1.0.1
v1.0.2
v1.0.3-lw

现在运行 git show 查看此标签信息,就只有相应的提交对象摘要:

$ git show v1.0.3-lw
commit b0d3c14a2b37f89d11ad19b5d02133006c02c0d6
Author: yuelengloulan <yuelengloulan@gmail.com>
Date:   Sat May 20 02:18:05 2017 +0800

    sencond edit commit

diff --git a/myfile.txt b/myfile.txt
index 29cd67d..5075299 100644
--- a/myfile.txt
+++ b/myfile.txt
@@ -1 +1,2 @@
 first my file
+sencond editing

后期加注标签

你甚至可以在后期对早先的某次提交加注标签。比如在下面展示的提交历史中:

$ git log --pretty=oneline
3bbcf2ac3d4cb737cd2f4f86cc55dd0d14d7cdd0 fifth editting
70a49466a460260c372110b785fec577da89468e forth editting
26471a091a03da09976c863e0df384626ac334a6 third editting commit
b0d3c14a2b37f89d11ad19b5d02133006c02c0d6 sencond edit commit
02059709034621ef9dd329ac024dfe5705cd566d first create file

我们忘了在提交 “forth editting”后为此项目打上版本号 v1.0.4,没关系,现在也能做。只要在打标签的时候跟上对应提交对象的校验和(或前几位字符)即可:

$ git tag -a v1.0.4 70a4

可以看到我们已经补上了标签:

$ git tag
v1.0.0
v1.0.1
v1.0.2
v1.0.4
$ git show v1.0.4
tag v1.0.4
Tagger: yuelengloulan <yuelengloulan@gmail.com>
Date:   Sat May 20 12:18:35 2017 +0800

add tag v1.0.4

commit 70a49466a460260c372110b785fec577da89468e
Author: yuelengloulan <yuelengloulan@gmail.com>
Date:   Sat May 20 12:12:25 2017 +0800

    forth editting

diff --git a/myfile.txt b/myfile.txt
index df07fdc..fdf3d6a 100644
--- a/myfile.txt
+++ b/myfile.txt
@@ -1,3 +1,4 @@
 first my file
 sencond editing
 third editing
+forth editing

获取Git项目最后的TAG

$ git describe --tags `git rev-list --tags --max-count=1` 

参考:http://blog.youkuaiyun.com/csfreebird/article/details/48903213

### 使用 Git 创建和管理标签 #### 创建带说明的标签 为了创建一个带有说明的标签,可以使用 `git tag` 命令并附上 `-a` 和 `-m` 参数。这允许指定标签名称以及附加描述性的消息。具体操作方式如下所示: ```bash $ git tag -a v1.1 -m "my version 1.1" ``` 这条命令会在当前最新提交之上创建名为 `v1.1` 的标注型(tag object)标签,并为其添加注释信息[^1]。 #### 查看已有标签 要查看项目中存在的所有标签,只需执行简单的 `git tag` 命令即可列出它们的名字列表;如果想要更详细的输出,则可加上参数如 `--list` 或者结合其他选项一起使用以获得更多信息。 #### 删除本地标签 当不再需要某个特定版本标记时,可通过下面的方式将其移除: ```bash $ git tag -d v1.0 ``` 此指令仅影响本地仓库中的对应条目,在远程库中仍可能存在相同名字的对象直到同步更新为止[^3]。 #### 关联历史提交与新标签 假设现在希望基于之前的某一确切变更点设立新的里程碑标识符,那么应该先定位到目标位置再实施加签动作。例如,给定一系列的历史记录摘要后决定选取其中一条作为参照物建立关联关系: ```bash $ git log --pretty=oneline ee07767 (HEAD -> master, tag: v1.0.0) modified f ff ... c90073d Merge branch 'dev' into master $ git tag -a v1.2 c90073d ``` 这里选择了合并开发分支至主干的那个节点处新增了一个叫做 `v1.2` 的轻量级或是重载形式(取决于是否提供了额外的消息文本)的标签对象[^4]。 #### 推送标签至远端仓库 最后一步是要确保这些自定义设置能够被团队成员共享访问的话就需要推送到公共存储空间里去。对于单个实例而言可以直接指明其全名来进行推送;而若是想一次性上传全部未同步过的则可以用通配符简化过程: ```bash # 单独推送一个标签 $ git push origin v1.2 # 同步所有尚未分享出去的新建/修改后的tag $ git push origin --tags ``` 以上就是围绕着Git工具内有关于“标签”的基本概念及其实际应用场景下的常规处理流程介绍。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值