SVN(TortoiseSVN)详细教程(四)--创建分支合并相互操作

一. 背景:

1. 项目中为何要创建分支,及合并?
      比如我现在项目所有的文件放在主干上(trunk)中,由于需求的变更,需要增加新的需求,但是我们主干上还要继续往下开发,在此我们可以新建一个分支,来做增加新的需求那一块,主干上继续开发,等分支上代码没有问题的时候,再合并到主干上来。
创建分支的最大的目的就是跟主线进行并行开发时候不影响主线的开发。

2. 如何操作?
    假如我本地新建一个文件夹test下有2个文件夹trunk(存放主干上的代码)和branch(存放分支上的代码),如下所示:


二. 先提取主干上的代码:

1. 点击trunk --> 鼠标右键 --> 点击SVN Checkout --> 弹出一个对话框,如下图所示:


2. 最后点击上面的checkout按钮后,就可以在主干上把代码从远程服务器上获取到,如下所示:


注:

下一讲,将讲如何搭建SVN服务器。


三. 新建分支:

从trunk(主干上)创建分支(branch)步骤如下:

1. 右键trunk --> branch/Tag 如下图:




在弹出的下框如下图:




点击ok按钮后,就可以在VisualSVN Serval服务器上新增newBranch,是从如上服务器qianduan3上的文件拷贝一份的,如下所示:




现在我们可以再来看看本地branch文件夹了,我现在直接进入branch文件下,右键 --> Chenckout下,就可以把newBranch下的所有文件提取出来了,如下所示:





点击ok按钮就可以把文件提取出来了,如下图所示:




分支目前建立在svn的服务器端,本地并没有更新,对本地branch文件夹 右键--> update即可,就可以更新到分支代码,如下所示:




四. 合并分支到主干上:


比如我现在对branch分支上新增3.txt文件,然后提交上去,如下所示:




我现在想把分支上的代码3.txt合并到主干上trunk,现在要怎么合并呢?步骤如下:

1. 回到我们刚刚的主干(trunk)文件夹下,鼠标右键该文件夹 --> TortoiseSVN --> Merge 


2. 在弹出的窗口,如下图所示:



3. 接着点击【Next】下一步,如下图所示:



4. 再接着点击【Next】下一步,如下图所示:




就可以看到主干trunk上多了一个3.txt, 就是从分支上合并过来的。


五:合并主干到分支


 如果主干上有一些更新,比如说jar包更新等等,那么这些要更新到分支上去,如何操作呢?比如我现在在主干上新建一个4.txt文件,比如如下:




我现在的分支上目录如下:




现在是想把主干上的4.txt合并到分支上来,要如何操作?

1. 我们在分支点击branch --> 右键TortoiseSVN --> Merge 



2. 在弹出新窗口后,如下图所示:




3. 接着点【Next】下一步,如下图所示:


4. 继续下一步,如下图:




5. 最后直接merge,就可以看到分支branch上也有主干上的4.txt文件了,也就是说,合并主干到分支上也是可以的,如下图所示:



<think>好的,我现在需要帮助用户了解如何在SVN创建分支。首先,我得回想一下用户之前的问题,他们之前询问过关于Qt中处理字符串包裹的问题,可能是在开发过程中遇到了版本控制的需求,现在转而想了解SVN分支创建方法。 用户的问题看起来是直接的,但可能需要分步骤的指导。首先,我应该确定用户对SVN的基本了解程度。可能用户已经使用过SVN,但还不熟悉分支操作,或者他们需要复习具体的命令和流程。 接下来,我需要回忆SVN创建分支的标准方法。通常,SVN创建分支是通过svn copy命令将trunk或某个目录复制到branches目录下。这里需要明确步骤,包括检出代码库、创建分支、提交分支以及切换工作副本到新分支。 可能用户需要具体的命令示例,比如使用svn copy的URL方式,或者工作副本方式。同时,需要解释每个步骤的作用,比如为什么推荐使用URL方式(因为不需要本地检出整个代码库,节省时间和带宽)。 另外,用户可能关心创建分支后的操作,比如如何切换到新分支进行开发,以及合并时的注意事项。虽然用户的问题只是创建分支,但提供一些后续步骤的提示可能对他们有帮助,比如使用svn switch或者直接检出分支。 还要考虑用户可能遇到的常见问题,例如权限问题、目录结构是否正确、提交时的冲突处理等。虽然用户没有明确提到这些问题,但在解释过程中适当提及可以增强回答的实用性。 另外,用户可能对SVN的标准目录结构(trunk, branches, tags)不太熟悉,所以需要简要说明这些目录的用途,帮助他们理解为什么要将分支放在branches目录下。 最后,需要确保回答结构清晰,步骤明确,并且提供示例命令,让用户能够直接复制使用。同时,使用中文自然表达,避免技术术语过于晦涩,必要时进行解释。</think>以下是 SVN 创建分支的完整操作指南: --- ### 一、标准分支创建流程 ```bash # 1. 确保本地工作副本已更新 svn update # 2. 创建分支(推荐URL操作方式) svn copy http://svn.example.com/repo/trunk \ http://svn.example.com/repo/branches/my-feature-branch \ -m "创建特性分支:my-feature-branch" # 3. 切换到新分支(两种方式任选) # 方式一:直接检出 svn checkout http://svn.example.com/repo/branches/my-feature-branch # 方式二:切换现有工作副本 svn switch http://svn.example.com/repo/branches/my-feature-branch ``` --- ### 二、进阶创建方式 #### 1. 基于特定版本创建 ```bash svn copy -r 1234 http://svn.example.com/repo/trunk \ http://svn.example.com/repo/branches/version-fix \ -m "基于r1234创建修复分支" ``` #### 2. 本地创建后提交 ```bash svn copy trunk branches/my-local-branch svn commit -m "提交本地创建分支" ``` #### 3. 目录结构约定(推荐) ``` repo/ ├── trunk/ # 主开发线 ├── branches/ # 所有分支 └── tags/ # 版本标签 ``` --- ### 三、分支管理最佳实践 1. **命名规范**: - 使用`feature/`前缀表示功能分支:`branches/feature/user-auth` - 使用`bugfix/`前缀表示修复分支:`branches/bugfix/issue-123` - 带日期版本:`branches/release-2023.07` 2. **权限控制**: ```bash # 设置分支权限示例 [repo:/branches/feature/*] @developers = rw @guests = r ``` 3. **分支生命周期**: ```mermaid graph LR A[创建分支] --> B[开发提交] B --> C{测试通过?} C -->|是| D[合并到trunk] C -->|否| B D --> E[删除分支] ``` --- ### 、常见问题解决方案 #### 1. 分支已存在错误 ```bash # 错误提示:svn: E160020: Path already exists # 解决方案: svn delete http://svn.example.com/repo/branches/conflict-branch -m "删除冲突分支" svn copy ... # 重新创建 ``` #### 2. 跨仓库创建分支 ```bash svn copy svn+ssh://repo1.example.com/trunk \ svn+ssh://repo2.example.com/branches/cross-repo \ --parents -m "跨仓库分支创建" ``` #### 3. 查看分支信息 ```bash svn log --stop-on-copy http://svn.example.com/repo/branches/my-branch svn info http://svn.example.com/repo/branches/my-branch ``` --- ### 五、图形化工具操作(以TortoiseSVN为例) 1. 右键工作副本 → TortoiseSVN分支/标记 2. 在"To URL"输入分支路径:`/branches/new-feature` 3. 勾选"立即切换工作副本到该分支" 4. 填写日志信息 → 确定 --- ### 六、合并准备建议 创建分支后推荐立即: ```bash # 1. 建立追踪关系 svn merge --record-only http://svn.example.com/repo/trunk # 2. 设置合并属性 svn propset svn:mergeinfo /branches/my-feature . ``` --- 通过以上方法,您可以高效管理SVN分支。实际使用中建议结合团队规范,定期清理过期分支以保持仓库整洁。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值