git tag和branch的区别

本文深入解析Git中tag和branch的概念区别,tag作为历史代码版本的封存标记,不可变动;而branch则代表一系列连续的commit。文章详细介绍了tag的类型、创建、查看及同步方法,适合所有对版本控制感兴趣的开发者。

tag 和branch的区别

  • Git tag是一系列commit的中的一个点,只能查看,不能移动。
  • branch是一系列串联的commit的线。

git tag的用法

  • 我们常常在代码封板时,使用git 创建一个tag ,这样一个不可修改的历史代码版本就像被我们封存起来一样,不论是运维发布拉取,或者以后的代码版本管理,都是十分方便的

git的tag功能

  • git 下打标签其实有2种情况
    轻量级的:它其实是一个独立的分支,或者说是一个不可变的分支.指向特定提交对象的引用
  • 带附注的:实际上是存储在仓库中的一个独立对象,它有自身的校验和信息,包含着标签的名字,标签说明,标签本身也允许使用 GNU Privacy Guard (GPG) 来签署或验证,电子邮件地址和日期,一般我们都建议使用含附注型的标签,以便保留相关信息
    所以我们推荐使用第二种标签形式

创建tag

  • git tag -a V1.2 -m ‘release 1.2’
  • 上面的命令我们成功创建了本地一个版本 V1.2 ,并且添加了附注信息 ‘release 1.2’

查看tag

  • git tag

  • 要显示附注信息,我们需要用 show 指令来查看

  • git show V1.2

  • 但是目前这个标签仅仅是提交到了本地git仓库.如何同步到远程代码库

  • git push origin --tags

  • 如果刚刚同步上去,你缺发现一个致命bug ,需要重新打版本,现在还为时不晚.

  • git tag -d V1.2

  • 到这一步我们只是删除了本地 V1.2的版本,可是线上V1.2的版本还是存在,如何办?这时我们可以推送的空的同名版本到线下,达到删除线上版本的目标:

  • git push origin :refs/tags/V1.2

  • 如何获取远程版本?

  • git fetch origin tag V1.2

  • 这样我们可以精准拉取指定的某一个版本.适用于运维同学部署指定版本.

Git 中,`Tag`(标签) `Branch`(分支)是两个不同的概念,尽管它们都可以指向一个特定的提交(commit),但它们的用途行为有显著区别。 --- ### 一、Branch(分支) - **定义**:分支是一个指向某个提交的可变指针。随着你在这个分支上提交新的更改,该指针会自动向前移动。 - **用途**:用于开发新功能、修复 bug、维护多个版本等。 - **可变性**:是可变的,会随着新的提交而更新指向。 - **示例**: - `main`(或 `master`)是默认的主分支。 - `feature/login` 是一个开发分支。 --- ### 二、Tag(标签) - **定义**:标签是一个指向特定提交的**不可变**指针。通常用于标记发布版本(如 v1.0.0)。 - **用途**:用于标记重要的提交节点,如版本发布。 - **可变性**:默认是不可变的(除非你手动移动标签)。 - **类型**: - **轻量标签(Lightweight)**:只是一个简单的引用。 - **附注标签(Annotated)**:包含更多信息(作者、日期、标签信息等),推荐使用。 --- ### 三、使用场景对比 | 场景 | 使用 Branch | 使用 Tag | |------|-------------|----------| | 开发新功能 | ✅ | ❌ | | 标记版本发布 | ❌ | ✅ | | 维护旧版本 | ✅ | ❌ | | 临时保存工作状态 | ✅ | ❌ | | 固定某个历史节点 | ❌ | ✅ | --- ### 四、命令对比 #### 创建分支 ```bash git branch feature/new-ui git checkout feature/new-ui ``` 或合并为一条命令: ```bash git checkout -b feature/new-ui ``` #### 创建标签(附注标签) ```bash git tag -a v1.0.0 -m "版本 1.0.0" ``` #### 推送标签到远程仓库 ```bash git push origin v1.0.0 ``` #### 查看所有标签 ```bash git tag ``` --- ### 五、总结 | 特性 | Branch | Tag | |------|--------|-----| | 是否可变 | ✅ 可变 | ❌ 不可变(除非手动修改) | | 是否用于开发 | ✅ 是 | ❌ 否 | | 是否用于版本标记 | ❌ 否 | ✅ 是 | | 是否会随提交移动 | ✅ 是 | ❌ 否 | ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值