Git 核心概念:Tag 与 Branch 的本质区别 📅 发布时间:2026/7/8 18:19:00 👁️ 浏览次数: 核心概念一句话总结Branch分支可移动的指针用于开发Tag标签固定的书签用于标记版本形象比喻Branch 像导航路标想象你在修路开发项目 起点 ──→ 路段A ──→ 路段B ──→ 路段C ↑ 路标main分支 修新路段D后路标会往前移 起点 ──→ 路段A ──→ 路段B ──→ 路段C ──→ 路段D ↑ 路标自动前进Tag 像里程碑想象公路上的里程碑 起点 ──→ 100km ──→ 200km ──→ 300km ↑ ↑ ↑ 里程碑1 里程碑2 里程碑3 即使继续修路里程碑的位置永远不变 起点 ──→ 100km ──→ 200km ──→ 300km ──→ 400km ↑ ↑ ↑ v1.0.0 v2.0.0 v3.0.0固定不变深入理解 BranchBranch 的工作原理初始状态 A ← B ← C ↑ main分支指针 提交新 commit D A ← B ← C ← D ↑ main自动移动 再提交 commit E A ← B ← C ← D ← E ↑ main继续移动Branch 的特点✅可移动性# 每次提交分支指针都会自动前进gitcommit -m新功能# main分支自动移到新commit✅可以同时存在多个D ← E ← feature分支 ↗ A ← B ← C ← F ← G ← main分支✅可以合并gitmerge feature# 把feature分支合并到main✅可以删除gitbranch -d feature# 删除分支commit不会删除Branch 的本质Branch 只是一个指向 commit 的指针# 查看分支指向哪个commit$gitlog main -1 commit abc1234...(main)# 本质上分支存储在这里.git/refs/heads/main# 文件内容就是commit的hash深入理解 TagTag 的工作原理发布版本历史 A ← B ← C ← D ← E ← F ← G ↑ ↑ ↑ v1.0.0 v2.0.0 v3.0.0永远固定 继续开发 A ← B ← C ← D ← E ← F ← G ← H ← I ↑ ↑ ↑ v1.0.0 v2.0.0 v3.0.0位置不变Tag 的特点不可移动性# Tag创建后就固定了gittag v1.0.0# 创建taggitcommit -m新提交# tag位置不变只能删除不能移动# 如果打错了tag只能删除重建gittag -d v1.0.0# 删除旧taggittag v1.0.0 abc123# 在正确的commit上重建通常用于标记发布版本gittag -a v4.0.3 -mRelease version 4.0.3Tag 的本质Tag 是一个永久指向特定 commit 的引用# Tag存储在这里.git/refs/tags/v4.0.3# 永远指向同一个commit# 查看tag信息$gitshow v4.0.3 tag v4.0.3 Tagger: Jesse Vincentjessefsck.comDate: Thu Jan232026Release v4.0.3: Strengthen using-superpowers关键区别对比直观对比表特性Branch分支Tag标签作用开发、追踪进度标记版本、存档移动性✅ 自动移动❌ 固定不动可修改✅ 可以提交新内容❌ 只读技术上可以删除重建生命周期可以删除通常永久保留使用场景日常开发版本发布checkout后正常状态Detached HEAD状态命名约定功能描述feature/xxx版本号v1.0.0技术层面对比1. 存储位置不同# 分支.git/refs/heads/main .git/refs/heads/develop# 标签.git/refs/tags/v1.0.0 .git/refs/tags/v2.0.02. checkout 行为不同# checkout 分支 → 正常状态$gitcheckout main Switched to branchmainYour branch is up todatewithorigin/main.# checkout tag → Detached HEAD$gitcheckout v4.0.3 Note: switching tov4.0.3.You areindetached HEADstate... HEAD is now at b9e1649 Release v4.0.33. 提交行为不同# 在分支上提交$gitcheckout main $gitcommit -m新功能[main abc1234]新功能# ✅ 分支自动前进# 在tag上提交实际上不推荐$gitcheckout v4.0.3 $gitcommit -m修改[detached HEAD xyz5678]修改# ⚠️ commit游离容易丢失实际应用场景Branch 的使用场景场景1功能开发# 创建功能分支gitcheckout -b feature/user-login# 开发过程中多次提交gitcommit -m添加登录表单gitcommit -m实现登录逻辑gitcommit -m添加错误处理# 合并回主分支gitcheckout maingitmerge feature/user-login场景2Bug 修复# 创建修复分支gitcheckout -b fix/login-error# 修复并提交gitcommit -m修复登录超时问题# 合并gitcheckout maingitmerge fix/login-error场景3并行开发# 团队成员各自开发gitcheckout -b feature/payment# 张三开发支付gitcheckout -b feature/admin# 李四开发后台gitcheckout -b feature/mobile# 王五开发移动端# 各自完成后合并到mainTag 的使用场景场景1版本发布# 开发完成准备发布v1.0.0gitcheckout maingittag -a v1.0.0 -m首次正式发布gitpush origin v1.0.0# 用户下载gitclone https://github.com/xxx/project.gitcdprojectgitcheckout v1.0.0# 获取1.0.0版本场景2Bug 回溯# 用户报告v2.3.1有bug# 开发者立即检出那个版本gitcheckout v2.3.1# 复现bug找到问题所在场景3版本对比# 对比两个发布版本的差异gitdiffv1.0.0 v2.0.0# 查看某个版本的代码gitshow v1.5.0:src/main.js 重点总结核心原则开发用 Branch发布用 TagBranch是活的movableTag是死的immutableBranch 可以改Tag 不能改Branch可以随意提交、合并、删除Tag创建后就固定只能删除重建Checkout 行为不同git checkout branch→ 正常工作模式git checkout tag→ Detached HEAD模式只读记忆口诀分支动标签静 开发用分支发布打标签 分支可移动标签不能变 切换分支正常切换标签警告最佳实践✅DO推荐用分支进行日常开发发布版本时打tagTag命名遵循语义化版本v1.2.3重要版本永久保留tag❌DON’T不推荐不要在tag上直接开发不要随意删除已发布的tag不要用分支来标记版本不要在detached HEAD状态下长期工作
Android开发工程师深度解析:技术能力与职业发展 博耳(无锡)电力成套有限公司 Android/安卓开发工程师 职位信息 职位描述: 1. Android平台应用开发; 2. 新需求和新技术的评估; 3. 应用模块问题定位与分析解决。 职位要求: 1. 有较强的JAVA语言编程基本功 2. 三年以上Android应用开发经验; 3. 具备良好的职业素养和团队… 2026/7/8 18:16:04
【Linux进阶篇】Shell环境变量入门:全局vs局部分不清?一篇吃透配置逻辑 🍃 予枫:个人主页 📚 个人专栏: 《Java 从入门到起飞》《读研码农的干货日常》 💻 Debug 这个世界,Return 更好的自己! 引言 做Linux开发或运维的同学,几乎每天都会和Shell环境变量打交道——配… 2026/7/5 2:11:19
OoderAgent 企业版 2.0 发布的意义:一次生态战略的全面升级 本次 ooderAgent 企业版 2.0 的发布,远非一次简单的版本迭代,而是标志着整个 ooderAgent 生态在战略定位、技术治理和社区共建上迈入了全新的阶段。其发布意义可以从以下几个层面进行综合分析: 一、 对生态本身:从“内部工具”… 2026/5/17 3:29:12
VS2022 C++开发环境精准装配指南 1. 这不是“点下一步就行”的安装:为什么VS2022 C开发环境总在编译前就卡死 你是不是也经历过——下载好几GB的VS2022安装包,双击运行,勾选“使用C的桌面开发”,一路点“下一步”,等两小时装完,新建一个空的… 2026/7/8 18:17:20
Filebeat入门实战:轻量日志采集原理与生产配置指南 1. 这不是“又一个ELK教程”,而是你真正能搭起来的日志管道起点 如果你搜过“ELK 教程 合集-Beats 教程 - 01-基础入门”,大概率已经点开过十来个页面,结果发现要么是照搬官方文档的翻译腔,要么是直接甩出一串 docker run -d -p … 2026/7/8 18:15:18
RDGen:面向工业落地的高质量机器人演示生成框架 1. RDGen不是又一个强化学习玩具项目,而是机器人演示生成的“精密装配线”你有没有试过让机械臂从零开始学拧螺丝?不是靠示教器手把手拖动,也不是靠海量人类示范视频喂出来的模仿模型,而是让它自己在仿真环境里反复试错、失败、调… 2026/7/8 18:15:18
Java代驾系统毕业设计全套:SpringBoot源码+MySQL脚本+论文+部署文档 本文还有配套的精品资源,点击获取 简介:基于SpringBoot开发的代驾业务管理系统,适配本科毕业设计需求,开箱即用。后端使用Java语言,数据库为MySQL,支持司机端与管理端双角色操作。核心功能覆盖订单全生命… 2026/7/8 18:13:18
.NET 10 Tensor Primitives实战:C#上位机轻量级AI推理性能翻倍记 前言 在工业上位机领域,"AI推理"往往让人联想到Python、CUDA和庞大的GPU服务器。但在实际产线中,我们更多面临的是这样的场景:工控机没有独显、内存只有8GB、需要在毫秒级完成缺陷分类或异常检测,且必须与现有的C#采集/… 2026/7/8 18:13:18
ParC 全局卷积算子 2024 新进展:在 ConvNeXt 中替换 7x7 卷积实测 FPS 提升 15% ParC全局卷积算子:在ConvNeXt中实现15%推理加速的2024技术突破1. 计算机视觉架构的演进与当前挑战计算机视觉领域正经历着从传统卷积神经网络(CNN)到Transformer架构的范式转移。2020年Vision Transformer(ViT)的横空出… 2026/7/8 18:11:14
BetterNCM安装器:高效管理网易云插件的最佳选择 BetterNCM安装器:高效管理网易云插件的最佳选择 【免费下载链接】BetterNCM-Installer 一键安装 Better 系软件 项目地址: https://gitcode.com/gh_mirrors/be/BetterNCM-Installer 还在为网易云音乐插件的繁琐安装流程而烦恼吗?BetterNCM安装器是… 2026/7/8 0:02:48
运动控制系统安全设置对比:ECI3808的3种限位保护与急停逻辑实现 运动控制系统安全机制深度解析:限位保护与急停逻辑的设计哲学在精密制造与自动化领域,运动控制系统的安全设计绝非简单的功能堆砌,而是一套融合了机械工程、电气原理和软件算法的防御体系。当一台数控机床以每分钟数万转的速度运转࿰… 2026/7/8 0:06:48
AI大模型应用开发:小白也能抓住的红利风口,收藏这篇入门指南! 文章指出,虽然微软等科技巨头在裁员,但英伟达等公司却在积极扩招AI相关人才,尤其是具身智能、仿真等领域。AI行业正在经历结构性调整,传统岗位被淘汰,而大模型应用开发等新岗位需求旺盛。对于想转行或学习AI的普通人来… 2026/7/8 0:10:49
6个月转型AI工程师:实战路径与核心技能 1. 项目概述:6个月转型AI工程师的可行性路径在2023年大模型技术爆发的背景下,AI工程师岗位需求同比增长217%(LinkedIn数据)。不同于传统算法工程师需要3-5年培养周期,现代AI工程师更侧重工程化落地能力。我在硅谷科技公… 2026/7/7 11:26:57
TPAFE0808与PIC18F87K22的多通道信号采集方案 1. 项目背景与核心需求在工业自动化、医疗设备和科研仪器等领域,多通道信号采集与系统监测是基础且关键的技术需求。传统方案往往面临通道数量不足、信号调理复杂、系统集成度低等问题。TPAFE0808作为一款8通道模拟前端芯片,与PIC18F87K22微控制器的组合… 2026/7/7 11:26:57
STC3115与PIC18LF26K80构建高精度电池管理系统 1. STC3115与PIC18LF26K80在电池管理系统中的核心价值在现代电子设备中,电池管理系统(BMS)的重要性不亚于设备的核心处理器。STC3115作为一款高精度电池电量监测IC,与PIC18LF26K80微控制器的组合,构成了一个既能精确监控又能智能管理的完整解… 2026/7/8 14:25:08