美文网首页git studyGit使用Git
2016-10-13 Git 基础(六) - 打标签

2016-10-13 Git 基础(六) - 打标签

作者: 重剑无锋_Augustine | 来源:发表于2016-10-13 16:47 被阅读34次

    像其他版本控制系统(VCS)一样,Git 可以给历史中的某一个提交打上标签,以示重要。 比较有代表性的是人们会使用这个功能来标记发布结点

    情形一: 列出标签

    命令:

    • git tag 列出tag
    • git tag -l "v0.0.*" 搜索v0.0系列的tag
    ➜  git_test git:(master) git tag -a v0.1.0 -m "测试标签"
    ➜  git_test git:(master) git tag
    v0.0.1-rc0
    v0.1.0
    ➜  git_test git:(master) git tag -l "v0.0.*"
    v0.0.1-rc0
    

    情形二: 创建标签

    Git 使用两种主要类型的标签:轻量标签(lightweight)与附注标签(annotated)。

    一个轻量标签很像一个不会改变的分支 - 它只是一个特定提交的引用。

    然而,附注标签是存储在 Git 数据库中的一个完整对象。 它们是可以被校验的;其中包含打标签者的名字、电子邮件地址、日期时间;还有一个标签信息;并且可以使用 GNU Privacy Guard (GPG)签名与验证。 通常建议创建附注标签,这样你可以拥有以上所有信息;但是如果你只是想用一个临时的标签,或者因为某些原因不想要保存那些信息,轻量标签也是可用的。

    创建附注标签

    ➜  git_test git:(master) git tag -a v0.1.1 -m "测试标签"
    ➜  git_test git:(master) git tag
    v0.0.1-rc0
    v0.1.0
    v0.1.1
    

    查看标签信息与对应的提交信息

    ➜  git_test git:(master) git show v0.1.1
    tag v0.1.1
    Tagger: augustine <cto@5dcto.com>
    Date:   Thu Oct 13 16:19:09 2016 +0800
    
    测试标签
    
    commit b6199c8df83ccb70a940d90c9621bcc43d025f1e
    Author: augustine <cto@5dcto.com>
    Date:   Wed Oct 12 14:59:30 2016 +0800
    
        test
    
    diff --git a/2 b/2
    index e69de29..14be0d4 100644
    --- a/2
    +++ b/2
    

    创建轻量标签

    ➜  git_test git:(master) git tag v1.0.1
    ➜  git_test git:(master) git tag
    v0.0.1-rc0
    v0.1.0
    v0.1.1
    v1.0.1
    

    查看轻量标签

    commit b6199c8df83ccb70a940d90c9621bcc43d025f1e
    Author: augustine <cto@5dcto.com>
    Date:   Wed Oct 12 14:59:30 2016 +0800
    
        test
    
    diff --git a/2 b/2
    index e69de29..14be0d4 100644
    --- a/2
    +++ b/2
    

    情形三: 后期打标签

    可以对过去的提交打标签。

    ➜  git_test git:(master) git log --pretty=oneline
    b6199c8df83ccb70a940d90c9621bcc43d025f1e test
    7dc31d13d7d48a7e1cd93f31668bd50beb679889 测试 ament
    e87932d0c46461dcf77fd75feef2a3c7b28e4fe4 renamed
    10ff61af1a6aea266a423222decc0dfc4be67ad8 rename
    d446522b785cc96b6161b91f35f0362eaffde7d4 rename
    782be0944b2e3b086fc13604dfece14b7512773f test
    4021312cdb038da674f6a85a5a3b358f012209dc save last commit
    
    ➜  git_test git:(master) git tag -a v0.0.1-rc00 e87932d0c46461dcf77fd75feef2a3c7b28e4fe4
      1 测试补打标签
      2 # Write a message for tag:
      3 #   v0.0.1-rc00
      4 # Lines starting with '#' will be ignored.
    ➜  git_test git:(master) git tag
    v0.0.1-rc0
    v0.0.1-rc00
    v0.1.0
    v0.1.1
    v1.0.1
    

    情形四: 共享标签

    默认情况下,git push 命令并不会传送标签到远程仓库服务器上。 在创建完标签后你必须显式地推送标签到共享服务器上。 这个过程就像共享远程分支一样 - 你可以运行 git push origin [tagname]

    如果想要一次性推送很多标签,也可以使用带有 --tags 选项的 git push 命令。 这将会把所有不在远程仓库服务器上的标签全部传送到那里。

    ➜  git_test git:(master) git push origin v0.0.1-rc0
    Username for 'https://github.com': xuguotao1984@163.com
    Password for 'https://xuguotao1984@163.com@github.com':
    Counting objects: 1, done.
    Writing objects: 100% (1/1), 158 bytes | 0 bytes/s, done.
    Total 1 (delta 0), reused 0 (delta 0)
    To https://github.com/xuguotao/git_test.git
     * [new tag]         v0.0.1-rc0 -> v0.0.1-rc0
     
    ➜  git_test git:(master) git push --tag
    Username for 'https://github.com': xuguotao1984@163.com
    Password for 'https://xuguotao1984@163.com@github.com':
    Counting objects: 3, done.
    Delta compression using up to 4 threads.
    Compressing objects: 100% (3/3), done.
    Writing objects: 100% (3/3), 375 bytes | 0 bytes/s, done.
    Total 3 (delta 1), reused 0 (delta 0)
    remote: Resolving deltas: 100% (1/1), done.
    To https://github.com/xuguotao/git_test.git
     * [new tag]         v0.0.1-rc00 -> v0.0.1-rc00
     * [new tag]         v0.1.0 -> v0.1.0
     * [new tag]         v0.1.1 -> v0.1.1
     * [new tag]         v1.0.1 -> v1.0.1
    

    情形五: 检出标签

    在 Git 中你并不能真的检出一个标签,因为它们并不能像分支一样来回移动。 如果你想要工作目录与仓库中特定的标签版本完全一样,可以使用 git checkout -b [branchname] [tagname] 在特定的标签上创建一个新分支

    ➜  git_test git:(master) git checkout -b v0.1.1
    Switched to a new branch 'v0.1.1'
    ➜  git_test git:(v0.1.1) gst
    On branch v0.1.1
    nothing to commit, working directory clean
    

    相关文章

      网友评论

        本文标题:2016-10-13 Git 基础(六) - 打标签

        本文链接:https://www.haomeiwen.com/subject/gzgwyttx.html