zoukankan      html  css  js  c++  java
  • Git实战手册(二): 标签应用和版本管理

    0. 背景介绍

    当一个代码仓库进过长时间的迭代,针对不同的时期和需求,必定会有不同的版本。而借助 Git 提供的标签功能,可以快捷方便地记录代码版本。无论什么时候,想取回某个版本,不再需要查找冗长的commit_id,只需要取出打标签的历史版本即可。

    可以这么理解:标签是版本库的一个快照。在主流的 Git 平台上,版本可以直接下载的,节省了开发者的不少精力。

    下面记录下如何借助 标签 进行版本管理。

    1. 环境仿真

    首先我在 github 上建立了一个仓库。如你所见,这是一个全新仓库:>>> Star now

    执行git clone git@github.com:dongyuanxin/git-demos.git, 将代码库 clone 到本地后。

    在根目录下创建一个hello.v1.py文件:touch hello.v1.py。代码如下:

    # hello.v1.py
    print("This is version 1.0")
    

    2. 本地标签操作

    下面记录了本地标签操作的常用命令:

    命令 作用
    git tag 查看所有标签
    git tag <tagname> 创建标签:tagname
    git tag -a <tagname> -m <comment> 为标签 tagname 增加说明 comment
    git show <tagname> 查看标签:tagname 的内容
    git tag -d <tagname> 删除标签:tagname

    其中,创建标签tagname并且增加说明comment,可以简写成:git tag <tagname> -m <comment>

    Now, 为代码库在本地打上标签:git tag v1.0.0 -m 'v1.0.0正式版本'

    3. 标签的远程推送和拉取

    在本地打好标签后,需要将标签推送到Git平台(比如GitHub)上,才能留下版本快照,供别人下载使用。

    除此之外,还有可能删除已经发布的标签(比如标签命名不合规范)。

    下面记录了远程标签操作的常用命令:

    命令 作用
    git push origin --tags 推送所有标签
    git push origin <tagname> 推送指定标签

    我们首先将v1.0.0版本推送到Github:git push origin v1.0.0

    然后,打开仓库,我们会发现releases标签已经变成了1。

    点进去,会发现我们可以直接下载v1.0.0版本。所以,标签是版本的快照。

    值得一提的是:标签会随着git clone仓库时候,自动拉取到本地。不信的话可以clone一下这个代码仓库,查看是不是已经有了v1.0.0这个标签。

    4. 标签的删除

    标签的删除请慎重,尤其是删除远程标签(一般来说,没有人会这么做)。命令如下:

    命令 作用
    git tag -d <tagname> 删除指定标签
    git push origin :refs/tags/<tagname> 删除远程标签

    5. 拓展阅读

    版本管理可以借助git的tag来实现。但是,在开发过程中,不可能每次修改都打标签然后发布。

    实际开发中,一般会有一个dev分支,作为开发版本分支。在没有完成此次开发任务前,所有的代码都是合并到dev分支。

    当完成了开发任务,管理者会将dev分支合并到master分支,然后删除dev分支,并且通过打标签来发布版本。

    这就是为什么很多放弃维护的大型开源项目只有master分支的原因。

  • 相关阅读:
    centos PIL 安装
    apache virtualhost 针对ip开放访问
    基础练习 矩形面积交 (分类讨论)
    UVa 10163 Storage Keepers (二分 + DP)
    UVaLive 5009 Error Curves (三分)
    UVa 11542 Square (高斯消元)
    UVa 10828 Back to Kernighan-Ritchie (数学期望 + 高斯消元)
    基础练习 回形取数 (循环 + Java 输入输出外挂)
    UVaLive 3704 Cellular Automaton (循环矩阵 + 矩阵快速幂)
    勇敢的妞妞 (状压 + 搜索)
  • 原文地址:https://www.cnblogs.com/geyouneihan/p/9600820.html
Copyright © 2011-2022 走看看