SVN分支

SVN 分支(Branch)最全实战指南

(2025 年最新、最规范、团队必备)

1. SVN 分支的本质(一句话记住)

SVN 的分支 = 仓库里的一次“廉价复制”(cheap copy),本质就是复制一份目录,几乎不占额外空间。

2. 标准目录结构(99% 的团队都这么用,强烈建议照抄)

/myproject                     ← 仓库根目录
 ├ trunk                       ← 主干,日常开发都在这里
 ├ branches                    ← 所有分支放这里
 │    ├ release-1.0            ← 发布分支(长期维护)
 │    ├ feature-user-center    ← 功能分支(短期)
 │    ├ hotfix-order-bug       ← 紧急热修复分支
 │    └ uat                    ← 测试环境专用分支
 └ tags                        ← 发布版本快照(只读)
      ├ v1.0.0
      ├ v1.0.1
      └ 2025.11.22

3. 4 种最常见分支类型 + 完整生命周期

分支类型创建时机生命周期命名规范推荐
feature 分支开始开发新功能trunk → 创建 → 开发 → 合并回 trunk → 删除feature/login-oauth
release 分支准备发布正式版trunk → 创建 → 只修 bug → 打 tag → 长期维护release-1.0、release-2025.11
hotfix 分支线上紧急 bug从最新 tag → 创建 → 修复 → 合并到 trunk 和 release → 打新 tag → 删除hotfix/order-payment-20251122
personal 分支个人不想影响主干trunk → 创建 → 随便玩 → 合并或直接废弃users/zhangsan/experiment

4. 分支操作全命令(直接复制粘贴)

# 1. 创建分支(最常用的 3 种)
# 创建功能分支
svn copy ^/trunk ^/branches/feature-new-ui -m "开始开发新版UI"

# 创建发布分支
svn copy ^/trunk ^/branches/release-1.0 -m "准备发布1.0版本"

# 创建紧急热修复分支(从 tag 创建)
svn copy ^/tags/v1.0.0 ^/branches/hotfix-payment -m "紧急修复支付bug"

# 2. 切换到分支开发(两种方式)
# 方式A:直接 checkout 分支(推荐)
svn checkout ^/branches/feature-new-ui feature-new-ui

# 方式B:已 checkout trunk,用 switch 切换(更省空间)
svn switch ^/branches/feature-new-ui

# 3. 合并分支(核心!)
# 把 feature 分支合并回 trunk(最常用)
svn merge ^/branches/feature-new-ui
svn commit -m "merge: 合并新版UI功能"

# 把 hotfix 同时合并到 trunk 和 release 分支(热修复标准做法)
cd trunk_working_copy
svn merge ^/branches/hotfix-payment
svn commit -m "merge hotfix to trunk"

cd ../release-1.0_working_copy
svn merge ^/branches/hotfix-payment
svn commit -m "merge hotfix to release-1.0"

# 4. 打 tag(发布版本)
svn copy ^/branches/release-1.0 ^/tags/v1.0.0 -m "发布正式版 v1.0.0"

# 5. 删除已合并完成的分支(保持仓库整洁)
svn delete ^/branches/feature-new-ui -m "删除已合并的功能分支"

5. 一键脚本:创建 + 切换 + 开发模板

# 创建并立即切换到新分支(最爽的写法)
create-branch() {
    if [ -z "$1" ]; then
        echo "用法: create-branch feature-login"
        return
    fi
    svn copy ^/trunk ^/branches/$1 -m "创建分支 $1"
    svn switch ^/branches/$1
    echo "已创建并切换到分支: $1"
}
# 使用:create-branch feature-new-api

6. 最佳实践(团队强制执行)

规则理由
永远从 trunk 或 tag 创建分支保证基线干净
功能开发必须开分支不影响主干稳定性
合并后立即删除分支保持 branches 目录整洁
发布必须打 tag历史可追溯,随时可回滚
热修复要同时合并到 trunk 和 release防止下次发布又出同样 bug
  1. 合并前先 svn update | 避免冲突 |
    | 大合并前先在分支里做集成测试 | 降低风险 |

7. TortoiseSVN 图形化操作(Windows 最快)

  1. 右键 → TortoiseSVN → Branch/tag…
  • To URL: 填 ^/branches/feature-xxx
  • Log message: 写创建理由
  • 勾选 “Switch working copy to new branch/tag”
    → 一点就完成创建+切换!

现在你已经完全掌握 SVN 分支了,比 95% 的老程序员还专业!

告诉我你现在想干啥,我直接给你最现成的一条命令:

  • 要开新功能分支?
  • 要准备发布 1.0?
  • 线上出 bug 要打热修复?
  • 要合并分支回 trunk?

贴一句需求,我 10 秒给你最完美的命令。

文章已创建 2637

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部