• Git学习笔记(8)——标签管理


    本文主要记录的Git标签的作用、标签的多种创建方式,以及标签的删除,与推送,和使用GitHub的Fork参与别人的项目。


    标签的作用

    发布版本时,通常先在版本库中打一个标签,这样,就唯一确定了打标签时刻的版本。无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来。所以,标签也是版本库的一个快照。Git的标签虽然是版本库的快照,但其实它就是指向某个commit的指针(跟分支很像,但是分支可以移动,标签不能移动),所以,创建和删除标签都是瞬间完成的。


    创建标签

    ubuntu@myUbuntu:~/joe/learngit$ git branch
    * dev
      master
    ubuntu@myUbuntu:~/joe/learngit$ 
    git checkout master
    //切换到主分支
    切换到分支 'master'
    您的分支与上游分支 'origin/master' 一致。
    ubuntu@myUbuntu:~/joe/learngit$ 
    git tag vs1.0
    //在此时创建一个标签,并查看
    ubuntu@myUbuntu:~/joe/learngit$ git tag
    vs1.0
    //给以前的commit提交创建标签
    ubuntu@myUbuntu:~/joe/learngit$ 
    git log --pretty=oneline --abbrev-commit
    //查看历史提交ID
    5079567 Merge pull request #1 from joesGit15/dev
    9ba78c3 Merge branch 'dev' of github.com:joesGit15/learngit into dev
    ba535f3 ubuntu dev
    a90acc8 ok
    a920dd1 win dev test
    52bc95e test01
    addb113 merge
    95c3257 ubuntu dev
    ......
    ......
    ubuntu@myUbuntu:~/joe/learngit$ 
    git tag v0.5 52bc95e
    //给test01设置标签
    ubuntu@myUbuntu:~/joe/learngit$ git tag
    v0.5
    vs1.0//便签的顺序不是按照时间顺序排序的,而是按照字母排序的。
    ubuntu@myUbuntu:~/joe/learngit$ 
    git show v0.5
    //显示某个标签而定详细内容
    commit 52bc95e5ed322f015e8904b1b26222afde0b670b
    Author: joe <little_star13@163.com>
    Date:   Tue May 12 16:45:45 2015 +0800
    
        test01
    
    diff --git a/abc.c b/abc.c
    index 08db0a8..190e9d0 100644
    --- a/abc.c
    +++ b/abc.c
    @@ -1,5 +1,4 @@
     I am dev
    -bug is o
     I am ubuntUk
     bug is ok
     I am dev window
    //带有姓名和备注内容的标签
    ubuntu@myUbuntu:~/joe/learngit$ 
    git tag -a vs0.6 -m "version 0.6"
     a920dd1
    ubuntu@myUbuntu:~/joe/learngit$ 
    git show vs0.6
    
    tag vs0.6
    Tagger: joe <little_star13@163.com>
    Date:   Tue May 12 21:16:17 2015 +0800
    
    version 0.6
    
    commit a920dd13e56cb76c49d48b9bfde4d7b963456eeb
    Author: joe-PC <little_star14@sina.cn>
    Date:   Tue May 12 16:48:32 2015 +0800
    
        win dev test
    
    diff --git a/abc.c b/abc.c
    index 099b74b..637aca6 100644
    --- a/abc.c
    +++ b/abc.c
    @@ -1,3 +1,2 @@
     I am dev
    -bug is ok
     I am dev window
    //为便签设置签名(必须安装gpg)
    ubuntu@myUbuntu:~/joe/learngit$ 
    git tag -s vs1.1 -m "signed version 1.1"
     ba535f3
    gpg: 已创建目录‘/home/ubuntu/.gnupg’
    gpg: 新的配置文件‘/home/ubuntu/.gnupg/gpg.conf’已建立
    gpg: 警告:在‘/home/ubuntu/.gnupg/gpg.conf’里的选项于此次运行期间未被使用
    gpg: 钥匙环‘/home/ubuntu/.gnupg/secring.gpg’已建立
    gpg: 钥匙环‘/home/ubuntu/.gnupg/pubring.gpg’已建立
    gpg: “joe <little_star13@163.com>”已跳过:私钥不可用
    gpg: signing failed: 私钥不可用
    error: gpg 无法为数据签名
    error: 无法签署 tag
    ubuntu@myUbuntu:~/joe/learngit$ pgp
    程序“pgp”尚未安装。 您可以使用以下命令安装:
    
    sudo apt-get install pgpgpg

    标签的操作

    ubuntu@myUbuntu:~/joe/learngit$ 
    git tag
    //显示所有标签
    v0.5
    vs0.6
    vs1.0
    ubuntu@myUbuntu:~/joe/learngit$ 
    git tag -d v0.5
    //本地删除单个标签
    已删除 tag 'v0.5'(曾为 52bc95e)
    ubuntu@myUbuntu:~/joe/learngit$ 
    git push origin vs0.6
    //将单个标签推送到远程库
    对象计数中: 1, 完成.
    写入对象中: 100% (1/1), 158 bytes | 0 bytes/s, 完成.
    Total 1 (delta 0), reused 0 (delta 0)
    To git@github.com:joesGit15/learngit
     * [new tag]         vs0.6 -> vs0.6
    ubuntu@myUbuntu:~/joe/learngit$ 
    git push origin --tags
    //推送所有标签
    Total 0 (delta 0), reused 0 (delta 0)
    To git@github.com:joesGit15/learngit
     * [new tag]         vs1.0 -> vs1.0
    ubuntu@myUbuntu:~/joe/learngit$ git tag
    vs0.6
    vs1.0
    //以下2步合起来是删除远程库的标签
    ubuntu@myUbuntu:~/joe/learngit$ 
    git tag -d vs0.6
    //前删除本地的标签
    已删除 tag 'vs0.6'(曾为 91832c8)
    ubuntu@myUbuntu:~/joe/learngit$ 
    git push origin :refs/tags/vs0.6
    //推动到远程。
    To git@github.com:joesGit15/learngit
     - [deleted]         vs0.6

    GitHub的使用

    GitHub不仅是免费的远程仓库,个人的开源项目,可以放到GitHub上,而且GitHub还是一个开源协作社区,通过GitHub,既可以让别人参与你的开源项目,也可以参与别人的开源项目。

    在GitHub上,利用Git极其强大的克隆和分支功能,人们可以自由参与各种开源项目。比如人气极高的bootstrap项目,这是一个非常强大的CSS框架,在它的项目主页,点“Fork”就在自己的账号下克隆了一个bootstrap仓库,然后,从自己的账号下clone。一定要从自己的账号下clone仓库,这样你才能推送修改。如果从bootstrap的作者的仓库地址git@github.com:twbs/bootstrap.git克隆,因为没有权限,你将不能推送修改。如果你希望bootstrap的官方库能接受你的修改,你就可以在GitHub上发起一个pull request


  • 相关阅读:
    为什么要用MarkDown?
    Android Studio: Application Installation Failed
    git查看某个文件修改历史
    有些事现在不做,一辈子都不会做了
    onMouseOver&onMouseOut vs onMouseEnter&onMouseLeave
    versionCode & versionName
    display:none vs visibility:hidden
    polyfill
    combineReducers
    React Context
  • 原文地址:https://www.cnblogs.com/zi-xing/p/4498749.html
Copyright © 2020-2023  润新知