没有不值得去解决的问题,也没有不值得去学习的技术!

TortoiseSVN 1.8.8中分支和合并实践规范

弹出解决冲突窗口

1、版本库的创建,基于VisualSVN Server 3.5.0

(1)右键Repositories,选择:Create new Repository…,选择:Regular FSFS repository,如图1

右键Repositories,选择:Create new Repository...,选择:Regular FSFS repository
图1

(2)设置Repository Name:branch,如图2

设置Repository Name:branch
图2

(3)选择:Single-project repository(with the top-level ‘trunk’,’branches’ and ‘tags’ folders),如图3

选择:Single-project repository(with the top-level 'trunk','branches' and 'tags' folders)
图3

(4)选择:Nobody has access,如图4

选择:Nobody has access
图4

(5)Finish,如图5

Finish
图5

(6)右键branch,选择:Properties,如图6

右键branch,选择:Properties
图6

(7)选择需要授权的用户组,选择:Develpoer、front_end_developer,如图7

选择需要授权的用户组,选择:Develpoer、front_end_developer
图7

(8)Permissions(权限)为:Read/Write,确定,如图8

Permissions(权限)为:Read/Write,确定
图8

2、主干检出

(1)新建目录branch,如图9

新建目录branch,如图9
图9

(2)进入目录branch,然后空白处右键,选择:SVN 检出,如图10

进入目录branch,然后空白处右键,选择:SVN 检出
图10

(3)在弹出窗口的版本库URL中填入:”https://192.168.2.63/svn/branch/trunk”,其他默认即可,最后点击确定,如图11

在弹出窗口的版本库URL中填入:"https://192.168.2.63/svn/branch/trunk",其他默认即可,最后点击确定
图11

(4)检出完成,确定,如图12

检出完成,确定
图12

3、主干提交

(1)进入目录branch,新建文件1.txt,如图13

进入目录branch,新建文件1.txt
图13

(2)进入目录branch,然后空白处右键,选择:SVN 提交,如图14

进入目录branch,然后空白处右键,选择:SVN 提交
图14

(3)在弹出窗口选择全部,添加备注,确定,如图15

在弹出窗口选择全部,添加备注,确定
图15

(4)提交完成,确定

4、创建分支v1

(1)进入目录branch,然后空白处右键,依次选择:”TortoiseSVN” -> “分支/标记”,如图16

进入目录branch,然后空白处右键,依次选择:"TortoiseSVN" -> "分支/标记"
图16

(2)在弹出窗口的”至路径”中填入分支的地址,可手动填写,也可以点击后面的浏览按钮,如图17

在弹出窗口的"至路径"中填入分支的地址,可手动填写,也可以点击后面的浏览按钮
图17

(3)点击浏览按钮,弹出窗口,如图18

点击浏览按钮,弹出窗口,如图18
图18

(4)选择:branches,确定,如图19

选择:branches,确定
图19

(5)在弹出窗口的”至路径”中填入分支的地址:”/branches”,已经自动填写,如图20

在弹出窗口的"至路径"中填入分支的地址:"/branches",已经自动填写
图20

(6)编辑”至路径”中填入分支的地址:”/branches/v1″,从此复制至版本库,选择:版本库中的最新版本,添加日志信息,确定,如图21

编辑"至路径"中填入分支的地址:"/branches/v1",从此复制至版本库,选择:版本库中的最新版本,添加日志信息,确定
图21

(7)创建分支完成,如图22

创建分支完成
图22

5、切换至分支v1

(1)进入目录branch,然后空白处右键,依次选择:”TortoiseSVN” -> “切换”,如图23

进入目录branch,然后空白处右键,依次选择:"TortoiseSVN" -> "切换"
图23

(2)在弹出窗口的”至路径”中填入分支的地址,可手动填写,也可以点击下拉列表选择,也可以点击后面的浏览按钮,确定,如图24

在弹出窗口的"至路径"中填入分支的地址,可手动填写,也可以点击下拉列表选择,也可以点击后面的浏览按钮,确定
图24

(3)切换完成,如图25

切换完成
图25

6、在分支v1上提交一个新文件

(1)进入目录branch(工作副本),新建文件v1.txt,如图26

进入目录branch(工作副本),新建文件v1.txt
图26

(2)空白处右键,选择:SVN 提交,选择全部,添加日志信息,如图27

空白处右键,选择:SVN 提交,选择全部,添加日志信息
图27

7、切换至主干

(1)进入目录branch,然后空白处右键,依次选择:”TortoiseSVN” -> “切换”,如图28

进入目录branch,然后空白处右键,依次选择:"TortoiseSVN" -> "切换"
图28

(2)在弹出窗口的”至路径”中填入分支的地址,可手动填写,也可以点击下拉列表选择,也可以点击后面的浏览按钮,确定,如图29

在弹出窗口的"至路径"中填入分支的地址,可手动填写,也可以点击下拉列表选择,也可以点击后面的浏览按钮,确定
图29

(3)切换完成,如图30

切换完成
图30

8、在主干上提交一个修改(注:主干用于修复bug,不用于添加新功能,建议只做合并分支使用)

(1)进入目录branch,编辑文件1.txt,如图31

进入目录branch,编辑文件1.txt
图31

(2)空白处右键,选择:SVN 提交,选择全部,添加日志信息,如图32

空白处右键,选择:SVN 提交,选择全部,添加日志信息
图32

(3)提交完成,如图33

提交完成
图33

9、再次切换至分支v1

(1)进入目录branch,然后空白处右键,依次选择:”TortoiseSVN” -> “切换”,如图34

进入目录branch,然后空白处右键,依次选择:"TortoiseSVN" -> "切换"
图34

(2)在弹出窗口的”至路径”中填入分支的地址,可手动填写,也可以点击下拉列表选择,也可以点击后面的浏览按钮,确定,如图35

在弹出窗口的"至路径"中填入分支的地址,可手动填写,也可以点击下拉列表选择,也可以点击后面的浏览按钮,确定
图35

(3)切换完成,如图36

切换完成
图36

(4)此时打开1.txt,发现在步骤8中所做的操作已经被还原,因为当时是提交至主干,并非提交至分支v1,如图37

此时打开1.txt,发现在步骤8中所做的操作已经被还原,因为当时是提交至主干,并非提交至分支v1
图37

10、在分支v1上提交一个修改

(1)进入目录branch,编辑文件1.txt,如图38

进入目录branch,编辑文件1.txt
图38

(2)空白处右键,选择:SVN 提交,选择全部,添加日志信息,如图39

空白处右键,选择:SVN 提交,选择全部,添加日志信息
图39

(3)提交完成,如图40

提交完成
图40

11、将主干合并到分支v1

(1)进入目录branch,然后空白处右键,依次选择:”TortoiseSVN” -> “合并”,如图41

进入目录branch,然后空白处右键,依次选择:"TortoiseSVN" -> "合并"
图41

(2)在弹出窗口的合并类型中选择:合并一个版本范围,下一步,如图42

在弹出窗口的合并类型中选择:合并一个版本范围,下一步
图42

(3)在合并窗口中,合并的源URL,可手动填写,也可以点击下拉列表选择,也可以点击后面的浏览按钮,确定,如图43

在合并窗口中,合并的源URL,可手动填写,也可以点击下拉列表选择,也可以点击后面的浏览按钮,确定
图43

(4)点击浏览按钮,弹出窗口,选择:trunk,确定,如图44

点击浏览按钮,弹出窗口,选择:trunk,确定
图44

(5)此时合并的源已经自动更改为:”https://192.168.2.63/svn/branch/trunk”,如图45

此时合并的源已经自动更改为:"https://192.168.2.63/svn/branch/trunk"
图45

(6)将要合并的修改版本范围,选择:指定范围(如果不填写版本范围,所有未合并的版本将被选中),如图46

将要合并的修改版本范围,选择:指定范围(如果不填写版本范围,所有未合并的版本将被选中)
图46

(7)合并选项,在这里只需保留默认设置即可,如图47

合并选项,在这里只需保留默认设置即可
图47

(8)在点击合并按钮前你可以先测试合并,查看成功与否,以及合并的详细信息,如图48

在点击合并按钮前你可以先测试合并,查看成功与否,以及合并的详细信息
图48

(9)弹出解决冲突窗口,如图49

弹出解决冲突窗口
图49

(10)剩下冲突:全部以后解决,如图50

剩下冲突:全部以后解决
图50

(11)主干所做的修改将同步到分支v1中,自动合并完成,如图51

主干所做的修改将同步到分支v1中,自动合并完成
图51

(12)打开1.txt,如图52

打开1.txt
图52

(13)手动解决冲突,编辑1.txt,且删除1.txt.开头的3个冲突文件,如图53

手动解决冲突,编辑1.txt,且删除1.txt.开头的3个冲突文件
图53

12、提交合并后的分支v1

(1)提交,如图54

提交
图54

(2)提交完成,至此,分支v1已经完全和主干同步,如果分支v1已经开发结束,那就将分支v1合并回主干了,当然,如果分支v1还要继续开发,那将不断地重复10-11这几个步骤,如图55

提交完成,至此,分支v1已经完全和主干同步,如果分支v1已经开发结束,那就将分支v1合并回主干了,当然,如果分支v1还要继续开发,那将不断地重复10-11这几个步骤
图55

13、将分支v1合并到主干(前提:在分支v1开发结束后)

(1)先切换至主干,可参考步骤7,如图56

先切换至主干,可参考步骤7
图56

(2)进入目录branch,然后空白处右键,依次选择:”TortoiseSVN” -> “合并”,如图57

进入目录branch,然后空白处右键,依次选择:"TortoiseSVN" -> "合并"
图57

(2)在弹出窗口的合并类型中选择:合并一个版本范围,下一步,如图58

在弹出窗口的合并类型中选择:合并一个版本范围,下一步
图58

(3)在合并窗口中,合并的源URL,可手动填写,也可以点击下拉列表选择,也可以点击后面的浏览按钮,确定,如图59

在合并窗口中,合并的源URL,可手动填写,也可以点击下拉列表选择,也可以点击后面的浏览按钮,确定
图59

(4)点击浏览按钮,弹出窗口,选择:branches/v1,确定,如图60

点击浏览按钮,弹出窗口,选择:branches/v1,确定
图60

(5)此时合并的源已经自动更改为:”https://192.168.2.63/svn/branch/branches/v1″,如图61

此时合并的源已经自动更改为:"https://192.168.2.63/svn/branch/branches/v1"
图61

(6)将要合并的修改版本范围,选择:指定范围(如果不填写版本范围,所有未合并的版本将被选中),如图62

将要合并的修改版本范围,选择:指定范围(如果不填写版本范围,所有未合并的版本将被选中)
图62

(7)合并选项,在这里只需保留默认设置即可,如图63

合并选项,在这里只需保留默认设置即可
图63

(8)在点击合并按钮前你可以先测试合并,查看成功与否,以及合并的详细信息,如图64

在点击合并按钮前你可以先测试合并,查看成功与否,以及合并的详细信息
图64

(9)自动合并完成,如图65

自动合并完成
图65

(10)查看1.txt的内容,分支v1所做的修改将同步到主干中,如图66

查看1.txt的内容,分支v1所做的修改将同步到主干中
图66

14、提交合并后的主干

(1)空白处右键,选择:SVN 提交,选择全部,添加日志信息,如图67

空白处右键,选择:SVN 提交,选择全部,添加日志信息
图67

15、显示日志

(1)显示日志信息,如果勾选包含合并版本,可以查看合并相关的信息,如图68

显示日志信息,如果勾选包含合并版本,可以查看合并相关的信息
图68

16、建议将13-15的步骤调整为16-18,将分支v5合并到主干(前提:在分支v5开发结束后)

(1)先切换至主干,可参考步骤7

(2)进入目录branch,然后空白处右键,依次选择:”TortoiseSVN” -> “合并”,如图70

进入目录branch,然后空白处右键,依次选择:"TortoiseSVN" -> "合并"
图70

(3)在弹出窗口的合并类型中选择:合并两个不同的树,下一步,如图71

在弹出窗口的合并类型中选择:合并两个不同的树,下一步
图71

(4)在合并窗口中,在起始:区域输入主干的完整文件夹地址,如图72

在合并窗口中,在起始:区域输入主干的完整文件夹地址
图72

(5)在结束:区域输入分支v4的路径,可以点击后面的浏览按钮进行选择,确定,如图73

在结束:区域输入分支v4的路径,可以点击后面的浏览按钮进行选择,确定
图73

(6)此时结束:区域已经自动更改为:”https://192.168.2.63/svn/branch/branches/v5″,如图74

此时结束:区域已经自动更改为:"https://192.168.2.63/svn/branch/branches/v5"
图74

(7)在结束版本处,点击版本后的显示日志按钮,查看分支v5的起始版本为:26,如图75

在结束版本处,点击版本后的显示日志按钮,查看分支v5的起始版本为:26
图75

(8)在起始版本处,选择版本,点击版本后的显示日志按钮,选择版本:25,即要添加分支v5的起始版本26的上一个版本,如图76

在起始版本处,选择版本,点击版本后的显示日志按钮,选择版本:25,即要添加分支v5的起始版本26的上一个版本
图76

(9)在合并窗口中,最终选项如图77,点击下一步

在合并窗口中,最终选项如图77,点击下一步
图77

(10)在点击合并按钮前你可以先测试合并,查看成功与否,以及合并的详细信息,如图78

在点击合并按钮前你可以先测试合并,查看成功与否,以及合并的详细信息
图78

(11)自动合并完成,如图79

自动合并完成
图79

17、提交合并后的主干

(1)空白处右键,选择:SVN 提交,选择全部,添加日志信息,如图80

空白处右键,选择:SVN 提交,选择全部,添加日志信息
图80

18、显示日志

(1)显示日志信息,如果勾选包含合并版本,可以查看合并相关的信息,如图81

显示日志信息,如果勾选包含合并版本,可以查看合并相关的信息
图81

19、总结:

(1)分支主要用于新功能的开发
(2)合并发生在本地工作副本,只要你不提交就不会影响到版本库
(3)合并前一定要先执行更新、提交,将本地的修改保存到版本库
(4)分支和主干(将其他分支合并到主干)并行开发的过程中,要经常同步,将主干的修改合并到分支,合并时选择”指定范围”
(5)分支开发结束后,才能够将分支合并到主干

需要长期技术维护或远程问题排查?

我是拥有 15+ 年经验的 PHP / Go 后端工程师,长期关注已有系统维护、Bug 修复、性能优化、服务器排查、WordPress 网站维护和小功能迭代。

如果你的项目遇到以下情况,可以先从一次小问题排查开始合作:

  • ✅ PHP / Laravel / Yii2 老项目无人维护
  • ✅ Go / Gin 后端接口需要排查或优化
  • ✅ WordPress 网站访问慢、报错或插件冲突
  • ✅ Nginx / MySQL / Redis / Linux 服务器异常
  • ✅ CDN / Cloudflare / DNS / HTTPS 配置问题
  • ✅ 需要长期远程技术支持或兼职维护

更多介绍请查看:关于我 & 合作

微信:13980074657
邮箱:shuijingwanwq@gmail.com
Telegram:@shuijingwan
GitHub:https://github.com/shuijingwan

评论

发表回复

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

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理