git tag

作者: 跑马溜溜的球 | 来源:发表于2019-11-19 14:54 被阅读0次

    1. tag是什么

    如果用过svn,你一定对tag不陌生。通常版本上线前,我们会对相应的代码打一个tag,将其封存起来,就如同一个代码快照。

    2. 常用操作

    2.1 创建tag

    git tag -a <tag名称> <commit hash> -m <备注信息>
    

    例:

    git tag v6.2.1 6b2d5ffc -m "皮肤盒子"
    

    commit hash不写,则默认对最后一次commit打tag
    比如:

    git tag v6.2.2 -m "tag测试"    
    

    2.2 列出所有tag

    git tag
    

    例:

    git tag
    1.0
    2.0
    v6.2.1
    v6.2.2
    

    使用-l参数可以进行前缀模糊匹配

    git tag -l v6*
    v6.2.1
    v6.2.2
    

    2.3 查看单个tag详情

    git show <tag名>
    

    例:

    git show v6.2.1
    
    tag v6.2.1
    Tagger: ball
    Date:   Fri Nov 15 14:37:05 2019 +0800
    
    皮肤盒子
    
    commit 6b2d5ffcf188314fb4a60373510b8bfcefdde67a
    Author: ball
    Date:   Fri Jan 25 17:06:08 2019 +0800
    
        bug fix
    
    diff --git a/br.txt b/br.txt
    deleted file mode 100644
    index b23a6f5..0000000
    --- a/br.txt
    +++ /dev/null
    @@ -1,2 +0,0 @@
    -add a line
    -ad
    diff --git a/br2.txt b/br2.txt
    deleted file mode 100644
    index e69de29..0000000
    diff --git a/br3.txt b/br3.txt
    deleted file mode 100644
    index e69de29..0000000
    

    2.4 删除tag

    git -d <tag名>
    

    2.5 推送/获取tag

    向仓库推送所有tag

    git push origin --tags
    

    向仓库推送指定tag

    git push origin <tag名>
    

    只要执行git pull就会获取所有tag

    3. 常见问题

    如何切换到相应的tag上,进行文件操作?

    git checkout <tag名>
    

    例:

    git checkout v6.2.1
    HEAD 目前位于 6b2d5ff... fix
    

    此时执行git status可以看到如下结果

    git status
    头指针分离于 v6.2.1
    

    说明我们目前不处于任何分支,而是位于tag中。

    是否可以修改tag中的内容?

    可以。切换到相应tag上,你就可以如同在一个分支上那样修改,提前其内容。
    但是实践中不建议修改,那样就失去了tag的意义。

    tag的本质是什么?

    tag本质是git某次commit的快照,tag的名字方便你记住某次commit。换句话说,如果你能记住每个发布版本对应的commit hash,其实完全可以将某个commit id检出,以达到查看其当时代码情况的目的。但是这样做实在是太麻烦,所以,还是用tag吧。

    相关文章

      网友评论

          本文标题:git tag

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