博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(六) Git--标签管理
阅读量:4186 次
发布时间:2019-05-26

本文共 2719 字,大约阅读时间需要 9 分钟。

在发布版本时,我们通常先在版本库打一个标签(tag),这样,就唯一确定了打标签时刻的版本.将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来,所以标签也是版本库的一个快照.

Git的标签虽然是版本库的快照,但其实它就是指向某个commit的指针(跟分支很像对不对?但分支可以移动,标签不能移动),所以,创建和删除标签都是瞬间完成的.
Git有了commit,为什么还要引入tag呢?
因为commit号是3b5819e...一串乱七八糟的数字不好找.而tag可以根据需要任意命名,让人非常容易记住,它跟某个commit绑定在一起.

创建标签

在Git中打标签,首先,需要切换到需要打标签的分支上:

$ git branch* dev  master$ git checkout masterSwitched to branch 'master'

然后,敲命令git tag <name>就可以打一个标签:

$ git tag v1.0
可以用命令git tag查看所有标签:

$ git tagv1.0

默认标签是打在最新提交的commit上的,有时候,如果忘了打标签,需要给之前的提交打上标签,怎么办呢?

方法是找到历史提交的commit id,然后打上就可以了:

$ git log --pretty=oneline --abbrev-commitb95bbf0 conflict fixedc2e47c0 & simple89cdc59 AND simplefae4e76 忽略不要的文件e151f7e add README.md3fafa4a remove test.txtc291807 add test.txt6d99443 boss8b33073 git tracks changes3557835 Revert "add aaa"9b4fd89 add aaa94bf088 append microService8cf77e4 add code for theme92b6075 add spring-boot sample5ad5c1f add a readme file

比方说要对& simple这次提交打标签,它对应的commit id是c2e47c0,敲入命令:

$git tag v0.8 c2e47c0
再用命令git tag查看:

$ git tagv0.8v1.0

这里需要注意,标签不是按时间顺序列出的,而是按字母排序的,可以用git show <tagname>查看标签信息:

$ git show v0.8commit c2e47c06db550e03b2c19ee5247b03d949a10541Author: alan7c 
Date: Fri Mar 17 17:42:44 2017 +0800 & simplediff --git a/README.md b/README.mdindex 342d90d..0a28620 100644--- a/README.md+++ b/README.md@@ -1 +1,2 @@ # spring-boot-mongo

还可以创建带有说明的标签,用-a指定标签名,-m指定说明的文字:

$ git tag -a v0.9 -m "version 0.9 master" b95bbf0
用命令git show <gitname>可以看到说明文字:

$ git show v0.9tag v0.9Tagger: alan7c 
Date: Mon Mar 27 16:29:13 2017 +0800version 0.9 mastercommit b95bbf0ac897b2d88fa4bcf0308913f624d566c7Merge: c2e47c0 89cdc59Author: alan7c
Date: Fri Mar 17 17:48:28 2017 +0800 conflict fixed

小结

  • 命令git tag <name>用于创建一个标签,默认为HEAD,也可以指定一个commit id;
  • git tag -a <tagname> -m "balabalalbala.." commit id可以指定标签信息;
  • 命令git tag可以查看所有标签.

操作标签

如果标签打错了,也可以删除标签:

$ git tag -d v0.8Deleted tag 'v0.8' (was c2e47c0)

因为创建的标签都是只存储在本地,不会自动推送到远程,所以打错的标签也可以在本地安全删除.

如果要推送某个标签到远程,使用命令git push origin <tagname>:

$ git push origin v1.0Total 0 (delta 0), reused 0 (delta 0)To git@github.alanluochong/spring-boot-test.git * [new tag]         v1.0 -> v1.0

或者一次性推送全部尚未推送到远程的本地标签:

$ git push origin --tagsCounting objects: 1, done.Writing objects: 100% (1/1), 554 bytes, done.Total 1 (delta 0), reused 0 (delta 0)To git@github.com:michaelliao/learngit.git * [new tag]         v0.2 -> v0.2 * [new tag]         v0.9 -> v0.9

如果标签已经推送到远程,要删除远程标签就麻烦一点,但是格式如下:

$ git push origin :refs/tags/v0.9To git@github.com:alanluochong/spring-mongo-test.git - [deleted]         v0.9

小结

  • 命令git push origin <tagname>可以推送一个本地标签到远程;
  • 命令git push origin --tags可以推送全部未推送过的本地标签;
  • 命令git tag -d <tagname>可以删除一个本地标签;
  • 命令git push origin :refs/tags/<tagname>可以删除一个远程标签;

转载地址:http://cyioi.baihongyu.com/

你可能感兴趣的文章
CSDN英雄会上会英雄
查看>>
调试技术能够让新技术的学习事半功倍
查看>>
系统集成项目招标要诀
查看>>
1.0.61.686 版发布
查看>>
PHP开发框架的现状和展望
查看>>
不一样的敏捷开发实践
查看>>
为什么 FleaPHP 使用 Table Data Gateway 代替 Active Record 来提供数据库访问服务
查看>>
学习 REST
查看>>
FleaPHP 的 Ajax 支持和 WebControls
查看>>
无知者无畏!
查看>>
FleaPHP 开发指南 - 7. 数据表关联
查看>>
FleaPHP 开发指南 - 6. 访问数据库
查看>>
FleaPHP 开发指南 - 5. 应用程序设置
查看>>
FleaPHP 开发指南 - 4. 命名规范和目录结构
查看>>
FleaPHP 开发指南 - 3. 应用程序入口
查看>>
FleaPHP 开发指南 - 1. 开始前的准备工作
查看>>
实际采用 FleaPHP 的网站
查看>>
经常问到的问题 (FAQ)
查看>>
关于 FleaPHP
查看>>
Web MVC框架-命令及页面跳转
查看>>