SVN 分支(十一)

11.分支

一、分支的作用

  • 将开发线分成多条独立线路,互不干扰。
  • 典型场景:主干(trunk)继续维护原有功能,分支(branch)用于开发新需求或实验性改动。
  • 分支本质上是主干的副本,具有完整的版本控制能力,最终可通过合并(merge) 回到主干。

二、创建分支

在本地副本中操作

1. 初始目录结构

runoob01/
├── branches/
├── tags/
└── trunk/

2. 从主干复制创建分支

svn copy trunk/ branches/my_branch

输出:

A         branches/my_branch

3. 查看状态

svn status

输出:

A  +    branches/my_branch
A  +    branches/my_branch/HelloWorld.html
A  +    branches/my_branch/readme
  • A + 表示计划添加到版本库,且带有历史记录(copy 来源)。

4. 提交分支到版本库

svn commit -m "add my_branch"

提交后新分支在版本库中正式生效。

三、在分支上开发

1. 切换到分支目录

cd branches/my_branch/

2. 新增文件并提交

# 创建新文件
touch index.html

# 加入版本控制
svn add index.html

# 提交到版本库(仅影响当前分支)
svn commit -m "add index.html"

分支的版本独立演进,不影响主干。

四、将分支合并到主干

1. 切换回主干目录

cd ../../trunk

2. 更新主干到最新

svn update

3. 执行合并

从分支合并到当前工作副本

svn merge ../branches/my_branch/

输出示例:

--- Merging r10 into '.':
A    index.html
--- Recording mergeinfo for merge of r10 into '.':
 G   .
  • A 表示新增文件(分支中创建的文件合并到主干)。

4. 查看合并后的结果

ll

输出中包含 index.html

5. 提交合并后的主干

svn commit -m "add index.html"

合并完成后,分支的所有改动已集成到主干,版本号增加。

五、命令速查表

操作 命令
创建分支 svn copy trunk/ branches/分支名
查看状态 svn status
提交分支 svn commit -m "注释"
切换分支目录 cd branches/分支名
合并分支到主干 svn merge ../branches/分支名
提交合并后的主干 svn commit -m "注释"

六、注意事项

  • 分支和主干是独立版本线,各自提交互不影响。
  • 合并操作在本地工作副本中进行,需要再次提交才能生效于版本库。
  • 合并后主干会获得分支的所有修改历史,SVN 会记录合并信息(mergeinfo),便于后续跟踪。