Git仓库分支(Branch)和标签(Tag)

本文介绍了仓库中分支和标签的管理规范,包括develop、release和master分支的作用及使用方式,以及如何通过标签进行版本管理和协作。适用于持续集成环境下团队协作。

仓库的分支(Branch)规范,影响到每个团队的工作流的一致性;标签(Tag)便于开发团队、测
试团队和其他团队识别每个项目的版本,特别是在协同处理线上问题的时候,大家可以非常清楚
地知道线上运行版本和代码库的对应关系。因此我们在制作的时候,主要考虑几个因素:

  • 一是要有一定的规则,方便持续集成CI(自动化构建、测试、分布等)
  • 二是要有一定的自由度,以适应不同团队的内部协作灵活性
  • 要清晰规整,不要参差不齐难以识别

基于我们当前团队的协作能力和提交代码的质量水平,并考虑方便持续集成CI(自动化构建、
测试、发布),我们约定下列常驻Branch:

  • develop 分支:顾名思义即持续开发的分支,我们希望每个开发组都在这个分支上保
    持线性的持续小步迭代,正常的CodeReview WorkFlow和开发级的自动CI也在这里进行。
    当开发完一个迭代(Sprint),开发小组有信心转测时,就将代码合并到 release 分支,
    并要求打一个alpha级的Tag(如5.2.0-alpha)
  • release 分支:顾名思义即用于发布过程的分支,包括开发转测(实际上我们认为这里的测试集成测试)、测试和BugFix以及发布上线的过程,当发布成功时要打一个发布beta Tag(如
    5.2.1-beta),并将代码合并到 master 分支
  • master 分支:即有质量保证的、可安全运行的分支,禁止直接代码提交,避免被污染,仅用
    于代码合并和归集,在这个分支上的代码应该永远是可用的、稳定的。当需要拉一个特别的开发分时,
    应该基于 master

当需要fix线上的一个问题是,应该基于上线时的那个beta Tag做hotfix。当出现线上Bug需要hotfix时,我们需要在上次上线的Tag处拉一个临时的 hotfix 分支进行
修正,或者在未被其他开发迭代污染的release分支上直接hotfix上线并合并到master和
develop,然后打一个新的Tag(如5.2.2-beta)

这个分支体系是我们期望长期持续迭代的分支规划,其它临时分支的删除、创建、命名,都由团队自己
决定,保持一定的灵活性。但每个团队都应该努力避免对上述常规情况造成破坏的情况发生,如果有特
殊情况(如有两个并行的开发分支同步进行),需要由各组Leader和QA团队协商提供临时方案,这会
影响到团队协同中的转测、CI基准分支等。

关于打 Tag 的规则

鼓励开发和QA团队共同对勤于打Tag,这便于真正的版本管理,避免有rollback需要或者需要查看和
对比历史版本的时候的混乱和低效局面。但同时也要求一定的规范性,让人一看便知。

Tag格式为: MajorVersion.MinorVersion.FixVersion-TypeLabel,其中TypeLabel
alphabetadevel。具体参见下图举例,其中devel是留给开发过程中
使用的。

分工上,开发团队负责打 tag-alpha,测试团队负责打 tag-beta

但是,自己决定并不意味着胡乱命名,大家仍然要以 语义明(白)(准)确 的原则
来管理自己的分支和标签名,因为所有这些都是为了提高协作效率。

这是一个参考示意图:
这里写图片描述

事实上,上图和常用的 Git 分支实践是比较相似的,只是为了方便自动化工作,我们将 release 分支常驻并配合 tag 管理了,其他工作的 workflow 基本相似,如下图:

这里写图片描述

必读经典:A successful Git branching model

参考文章:GIT分支管理是一门艺术

<think>好的,用户想在GitHub上使用特定分支标签进行操作,我需要根据提供的引用内容来组织回答。首先,我需要明确用户的需求,他们可能是在版本控制中需要切换分支、创建标签,或者管理远程仓库分支标签。 引用中提到了branchtag的基本操作命令,比如如何创建、查看、删除tag,以及分支的克隆、检出、提交等。用户可能希望了解如何在GitHub上执行这些操作,而不仅仅是本地的Git命令。需要将本地操作与GitHub的远程仓库操作结合起来。 首先,我应该分步骤说明分支标签的操作,包括创建、切换、推送、查看删除。例如,对于分支,用户可能需要知道如何创建本地分支并推送到远程,或者如何检出远程分支。对于标签,需要说明如何创建带注释的标签,并推送到GitHub,以及如何删除远程标签。 需要注意用户是在GitHub环境下操作,所以可能需要强调远程仓库相关的命令,比如git push origin branch_name或git push origin tag_name。同时,引用中的例子有提到检出远程分支的命令,比如git checkout -b branch_name,这需要解释清楚。 还要考虑用户可能的常见使用场景,比如版本发布时打标签,或者在不同分支上开发新功能。可能需要给出具体的示例命令,比如创建版本标签v1.0并推送到GitHub,或者如何切换到已有的远程分支进行开发。 另外,用户可能会混淆分支标签的区别,需要简单说明两者的用途。标签用于标记特定提交,不可变,而分支用于开发流程,会随着提交前进。 最后,生成相关问题时要围绕用户可能进一步想知道的内容,比如如何比较标签之间的差异,或者如何处理分支合并冲突等。确保问题覆盖用户可能遇到的后续疑问。 总结回答结构:分branchtag两部分,每部分包含常用操作,结合GitHub的远程操作,给出具体命令示例,并强调关键注意事项,如推送标签到远程的步骤。同时,参考引用中的命令确保准确性。</think>### GitHub 上使用特定分支标签Git 操作指南 #### 一、分支Branch)操作 1. **查看分支** - 查看本地分支:`git branch` - 查看远程分支:`git branch -r` - 查看所有分支(本地+远程):`git branch -a` 2. **创建并切换分支** ```bash git checkout -b <branch_name> # 创建本地分支并切换 git push origin <branch_name> # 推送分支GitHub ``` 3. **检出远程分支** ```bash git fetch origin # 同步远程分支信息 git checkout origin/<branch_name> # 检出远程分支(只读) git checkout -b <local_branch_name> origin/<remote_branch_name> # 创建本地分支并关联远程分支 ``` 4. **删除分支** ```bash git branch -d <branch_name> # 删除本地分支 git push origin --delete <branch_name> # 删除远程分支 ``` --- #### 二、标签Tag)操作 1. **创建标签** - 轻量标签(无注释):`git tag <tag_name>` - 带注释的标签(推荐): ```bash git tag -a v1.0 -m "Release version 1.0" # 本地创建 git push origin v1.0 # 推送到 GitHub ``` 2. **查看标签** ```bash git tag # 查看本地标签列表 git show v1.0 # 查看标签详细信息 git ls-remote --tags origin # 查看远程标签 ``` 3. **删除标签** ```bash git tag -d v1.0 # 删除本地标签 git push origin --delete v1.0 # 删除远程标签 ``` 4. **基于标签检出代码** ```bash git checkout v1.0 # 切换到标签对应的提交(进入分离头指针状态) ``` --- #### 三、关键注意事项 1. **分支标签的区别** - 分支Branch)用于开发流程,会随新提交移动;标签Tag)标记特定提交(如版本发布),不可修改[^2]。 - 示例:`git tag v2.0 -m "正式版本"` 标记当前提交为稳定版本[^3]。 2. **远程操作同步** - 新建分支/标签后需显式推送:`git push origin <name>` - 删除远程分支/标签需使用专用命令(见上文)。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值