创建分支和标签均通过TortoiseSVN的“Branch/Tag”菜单操作,核心在于路径选择(如/branches/feat-x或/tags/v1.0.0)、源版本控制(推荐HEAD)及是否切换工作副本;分支可写可合并,标签只读不可修改,本质均为廉价拷贝但语义严格区分。

创建分支和标签是 SVN 协作开发中最常用也最易出错的操作。TortoiseSVN 把这两类操作统一在“Branch/Tag”菜单里,关键在于路径选择、源版本控制和后续切换——不是点一下就完事,而是要理解“在哪建、从哪来、怎么用”。
一、创建前必须确认的仓库结构
标准 SVN 仓库推荐使用 trunk / branches / tags 三层结构:
- trunk:主干,存放当前稳定可发布的代码
- branches:分支目录,所有功能开发、发布准备、紧急修复都放这里
- tags:标签目录,只用于标记快照(如 v1.2.0),严禁直接提交修改
如果仓库没提前建好这三层,首次创建分支/标签时需手动补全:
用 Repo-browser 打开仓库根目录 → 右键新建文件夹 → 依次创建 branches 和 tags(注意大小写一致)。
二、创建分支:隔离开发不扰主干
以从 trunk 开发新功能为例:
- 在本地 trunk 工作副本 文件夹空白处右键 → TortoiseSVN → Branch/Tag…
- “至路径(To path)”填:
/branches/feat-payment-202606(路径以/开头,表示仓库根目录下) - “版本源”选:版本库中的最新版本(HEAD)(最常用,确保基于最新稳定代码)
- 勾选 切换工作副本至分支/标记(立即切换到新分支,避免误改 trunk)
- 输入日志,如“为支付模块新建开发分支”,点击确定
成功后,工作区自动变为该分支内容,右键 → Revision graph 可直观看到分支线已生成。
三、创建标签:固化里程碑版本
发布前打 tag(如上线 v2.1.0):
- 在 trunk 或 release 分支的工作副本 中右键 → Branch/Tag…
- “至路径”填:
/tags/v2.1.0(命名建议含版本号,避免纯日期) - 同样选 版本库中的最新版本(确保 tag 精确对应当前待发布状态)
- 不要勾选“切换工作副本”(tag 是只读快照,无需在它上面开发)
- 日志写明用途,如“v2.1.0 正式发布版本”
完成后,Repo-browser 中打开 /tags/v2.1.0,内容应与创建时的源完全一致——任何后续提交到该路径都会触发 TortoiseSVN 警告:“你正在向标签提交,请确认这不是分支!”
四、分支与标签的本质区别和常见误区
技术上,分支和标签在 SVN 内部都是 廉价拷贝(cheap copy),但语义完全不同:
-
分支可写、可提交、可合并:比如
/branches/feat-login允许持续开发并最终合入 trunk -
标签只读、不修改、不提交:一旦
/tags/v1.0.0建立,就代表那个时刻的完整代码状态 - 误把 tag 当分支用?提交时会弹警告,且破坏版本可追溯性
- 需要修复已发布版本?应从对应 tag 创建新分支(如
/branches/hotfix-v1.0.1),修完再打新 tag
记住一句话:分支是“活的开发线”,标签是“死的快照点”。操作路径相似,但目的和后续行为截然不同。

















