美文网首页
八、Git标签与别名

八、Git标签与别名

作者: 程序员汪汪 | 来源:发表于2020-10-08 15:25 被阅读0次

    标签,顾名思义就是做标记,在git中,一般用与标记某个发布节点。

    git 支持两种标签:轻量标签(lightweight)与附注标签(annotated)。

    轻量标签:很像一个不会改变的分支——它只是某个特定提交的引用,不会存储任何信息。

    附注标签:是存储在 Git 数据库中的一个完整对象, 它们是可以被校验的,其中包含打标签者的名字、电子邮件地址、日期时间, 此外还有一个标签信息,并且可以使用 GNU Privacy Guard (GPG)签名并验证。

    通常会建议创建附注标签,这样你可以拥有以上所有信息。但是如果你只是想用一个临时的标签, 或者因为某些原因不想要保存这些信息,那么也可以用轻量标签。

    列出标签

    使用git tag命令(可带上可选的参数-l或者-list

    $ git tag
    

    这个命令会以字母顺序列出标签,但不是很重要

    如果对某个特定的版本号感兴趣,可以使用下面的方式:

    $ git tag -l "v1.8.5*" # 查看v1.8.5系列
    

    创建标签

    附注标签:

    在 git 中创建附注标签十分简单。 最简单的方式是当你在运行 tag 命令时指定 -a 选项:

    $ git tag -a v1.0 -m 'test version 1.0'
    

    -m 选项指定了一条将会存储在标签中的信息。 如果没有为附注标签指定一条信息,git 会启动编辑器要求你输入信息。

    通过使用 git show 命令可以看到标签信息和与之对应的提交信息:

    $ git show -q v1.0 # -q表示不显示差异输出
    tag v1.0
    Tagger: hahaha <orcale.io@gmail.com>
    Date:   Sun Sep 27 14:21:53 2020 +0800
    
    test version 1.0
    
    commit 6680bd40434821abf3e29045593629d4c9fddb15 (HEAD -> master, tag: v1.0)
    Author: hahaha <orcale.io@gmail.com>
    Date:   Sun Sep 27 12:58:55 2020 +0800
    
        modify google.txt add google play
    

    输出显示了打标签者的信息、打标签的日期时间、附注信息,然后显示具体的提交信息。

    轻量标签:

    轻量标签本质上是将提交校验和 存储到一个文件中——没有保存任何其他信息。 创建轻量标签,不需要使用 -a-s-m 选项,只需要提供标签名字:

    $ git tag v1.0.1
    

    这时,如果运行 git show,你不会看到额外的标签信息。 命令只会显示出提交信息:

    $ git show -q v1.0.1
    commit 6680bd40434821abf3e29045593629d4c9fddb15 (HEAD -> master, tag: v1.0.1, tag: v1.0)
    Author: hahaha <orcale.io@gmail.com>
    Date:   Sun Sep 27 12:58:55 2020 +0800
    
        modify google.txt add google play
    

    后期打标签

    git也可以对过去的提交打标签。假如提交历史是这样的:

    $ git log --oneline
    6680bd4 (HEAD -> master, tag: v1.0.1, tag: v1.0) modify google.txt add google play
    0b1cde0 readme.txt version 3.0
    4b45669 readme.txt version 2.0
    d3c72dd readme.txt version 1.0
    73d5592 modify google.txt and add file readme.txt
    6a1006a rename app.txt -> application.txt
    ......
    

    假设现在想在readme.txt version 1.0这次提交上打个标签,那么就需要在命令的末尾指定提交的校验和(或部分校验和):

    $ git tag -a v1.0-release d3c72dd -m '后期打标签,释放1.0版本'
    $ git tag
    v1.0
    v1.0-release
    v1.0.1
    
    $ git show -q v1.0-release
    tag v1.0-release
    Tagger: hahaha <orcale.io@gmail.com>
    Date:   Sun Sep 27 14:31:55 2020 +0800
    
    后期打标签,释放1.0版本
    
    commit d3c72dd5ba02000c359d3b7b524250f42d3fade5 (tag: v1.0-release)
    Author: hahaha <orcale.io@gmail.com>
    Date:   Sat Sep 26 16:56:55 2020 +0800
    
        readme.txt version 1.0
    

    可以看到你已经在那次提交上打上标签了。

    共享(推送)标签

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

    # 在之前讲远程仓库时,我们在最后把远程仓库移除了,现在我们先添加上
    $ git remote add origin https://github.com/tiangoubot/learngit.git
    # 共享(推送)标签到远程仓库
    $ git push origin v1.0-release
    Enumerating objects: 1, done.
    Counting objects: 100% (1/1), done.
    Writing objects: 100% (1/1), 201 bytes | 50.00 KiB/s, done.
    Total 1 (delta 0), reused 0 (delta 0), pack-reused 0
    To https://github.com/tiangoubot/learngit.git
     * [new tag]         v1.0-release -> v1.0-release
    
    image-20200927143930833.png

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

    $ git push origin --tags
    Enumerating objects: 1, done.
    Counting objects: 100% (1/1), done.
    Writing objects: 100% (1/1), 160 bytes | 160.00 KiB/s, done.
    Total 1 (delta 0), reused 0 (delta 0), pack-reused 0
    To https://github.com/tiangoubot/learngit.git
     * [new tag]         v1.0 -> v1.0
     * [new tag]         v1.0.1 -> v1.0.1
    

    现在,当其他人从仓库中克隆或拉取,他们也能得到你的那些标签。

    删除标签

    删除掉你本地仓库上的标签,可以使用命令 git tag -d <tagname>。 例如,可以使用以下命令删除一个轻量标签:

    $ git tag -d v1.0.1
    Deleted tag 'v1.0.1' (was 6680bd4)
    

    注意:上述命令并不会从任何远程仓库中移除这个标签,你必须使用下面的方式来更新你的远程仓库。

    • 方式一:

      $ git push origin :refs/tags/v1.0.1
      To https://github.com/tiangoubot/learngit.git
       - [deleted]         v1.0.1
      

      上面这种操作的含义是,将冒号前面的空值推送到远程标签名,从而高效地删除它。

    • 方式二(更直观一点):

      $ git push origin --delete v1.0
      To https://github.com/tiangoubot/learngit.git
       - [deleted]         v1.0
      

    检出标签

    我还没弄明白,先空着,以后搞清楚了再来更新!

    别名(了解)

    git 旧版本并不会在你输入部分命令时自动补全你想要的命令,如果不想每次都输入完整的git命令,可以通过 git config 文件来轻松地为每一个命令设置一个别名。 这里有一些例子你可以试试:

    $ git config --global alias.co checkout
    $ git config --global alias.br branch
    $ git config --global alias.ci commit
    $ git config --global alias.st status
    

    新版本的git有自动补全命令的功能,建议比较长的命令可以使用别名,比如查看提交历史的。

    更多的信息,请查看git官网

    相关文章

      网友评论

          本文标题:八、Git标签与别名

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