GIT 存储,tag

GIT 存储

经常使用Git,有时候就会有个疑问冒出来:Git是如何保存我提交的这些内容的呢?今天总算花点时间搜索了一番,有了个基本的概念,写下来保存。

Git 和其他版本控制系统的主要差别在于,Git 只关心文件数据的整体是否发生变化,而大多数其他系统则只关心文件内容的具体差异这类系统(CVS,Subversion,Perforce,Bazaar 等等)每次记录有哪些文件作了更新,以及都更新了哪些行的什么内容,请看下图

其他系统在每个版本中记录着各个文件的具体差异

Git 并不保存这些前后变化的差异数据。实际上,Git 更像是把变化的文件作快照后,记录在一个微型的文件系统中。每次提交更新时,它会纵览一遍所有文件的指纹信息并对文件作一快照,然后保存一个指向这次快照的索引。为提高性能,若文件没有变化,Git 不会再次保存,而只对上次保存的快照作一链接。Git 的工作方式就像下图所示

Git 保存每次更新时的文件快照

这么作的优点就是,Git的几乎所有操作都是本地操作,你可以即使不联网,你依然可以查看历史,比较变更,提交修改,等到有网络时一次性传上去,而这点对其它VCS是不可能的。

GIT tag

用途

标签可以针对某一时间点的版本做标记,常用于版本发布(标记之后,自动发布),这恰恰是我所需要的功能,将本地标签推送到Github上即发布了一个Release版本,下载和查看非常方便。

标签分类

git标签分为两种类型:轻量标签和附注标签。轻量标签是指向提交对象的引用,附注标签则是仓库中的一个独立对象,建议使用附注标签,日后还可以查看标签信息。

创建标签

  • 创建轻量标签

    $ git tag v0.2.0 -light

    解释:创建轻量标签不需要传递参数,直接指定标签名称即可。

  • 创建附注标签

    $ git tag -a v0.1.0 -m "release 0.1.0 version"

    解释:创建附注标签时,参数-a即annotated的缩写,指定标签类型,后附标签名。参数m指定标签说明,说明信息会保存在标签对象中。

查看标签

  • 列出当前仓库的所有标签

    $ git tag

     

  • 列出符合模式的标签

    $ git tag -l 'v0.1.*'

     

  • 查看标签版本信息

    $ git show v0.1.0

     

切换标签

  • 切换标签与切换分支命令相同

    $ git checkout [tagname]

    解释:切换标签后处于一个空的分支上,即”You are in ‘detached HEAD’ state.”

删除标签

  • 删除本地标签

    $ git tag -d v0.1.2
    

     

  • 删除远程标签

    $ git push origin --delete tag 
    标签名(删除服务器的tag标签,删除本地标签后 用git push origin --tags 不会将删除的标签发到服务器)


    解释:参数-d即delete的缩写,意为删除其后指定的标签。

补打标签

  • 给指定的commit打标签

    $ git tag -a v0.1.0 49e0cd22f6bd9510fe65084e023d9c4316b446a6

    解释:打标签不必要在HEAD之上,也可在之前的版本上打,这需要你知道某个提交对象的校验和,通过git log命令获取。

发布标签

  • 将v0.1.0标签提交到git服务器

    $ git push origin v0.1.0

    解释:通常的git push不会将标签对象提交到git服务器,我们需要进行显式的操作。

    • 将本地所有标签一次性提交到git服务器

      $ git push origin -–tags
      

       

<think>好的,用户想知道如何在Git中创建标签。首先,我需要回顾一下Git标签的基本概念,分为轻量标签和附注标签。轻量标签只是一个指向特定提交的指针,而附注标签则包含更多信息,比如标签作者、日期和消息。 接下来,我需要整理创建标签的具体命令。对于轻量标签,使用`git tag <标签名>`,而附注标签则需要加上`-a`选项和`-m`来添加注释。比如`git tag -a v1.0 -m "版本1.0"`。同时,用户可能需要知道如何将标签推送到远程仓库,这里需要用到`git push origin <标签名>`或者一次性推送所有标签。 另外,用户可能会对如何查看已有标签、删除标签或者基于特定提交打标签感兴趣。这部分内容也需要涵盖进去,比如`git tag`查看所有标签,`git tag -d`删除本地标签,以及`git push origin --delete`删除远程标签。 还需要注意引用中的内容,比如引用[1]提到使用Git标签版本生成NuGet包,这可能和持续集成流程有关,可以提到在GitHub Actions中使用标签触发工作流。引用[4]提到了创建和应用补丁,虽然和标签关系不大,但可以强调标签在版本管理中的重要性。 最后,生成相关问题时,要覆盖用户可能进一步想了解的内容,比如标签与版本发布的关系、如何自动化处理标签、以及标签与其他Git操作的区别等。确保回答结构清晰,步骤明确,符合用户的需求。</think>### 如何在Git中创建标签 Git标签(Tag)用于标记代码库中的重要节点(如版本发布)。以下是具体操作步骤: #### 1. **创建轻量标签** 轻量标签(Lightweight Tag)仅作为提交的引用指针,不存储额外元数据: ```bash git tag v1.0.0 ``` #### 2. **创建附注标签** 附注标签(Annotated Tag)包含作者、日期和消息等元信息,推荐用于正式版本: ```bash git tag -a v1.0.0 -m "Release version 1.0.0" ``` #### 3. **查看已有标签** ```bash git tag # 列出所有标签 git show v1.0.0 # 显示标签详情 ``` #### 4. **推送标签到远程仓库** 默认情况下`git push`不会传输标签,需显式推送: ```bash git push origin v1.0.0 # 推送单个标签 git push origin --tags # 推送所有本地未同步的标签 ``` #### 5. **基于特定提交打标签** 若需为历史提交添加标签,需指定提交哈希值: ```bash git tag -a v0.9.0 9fceb02 -m "Beta version" ``` #### 6. **删除标签** ```bash git tag -d v1.0.0 # 删除本地标签 git push origin --delete v1.0.0 # 删除远程标签 ``` ### 应用场景 - **版本发布**:通过标签标记稳定版本(如$v2.1.3$)[^1] - **持续集成**:GitHub Action可通过标签触发自动化构建流程 - **代码回滚**:快速定位到特定版本代码状态
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值