svn 创建分支、切换分支 及 合并分支 操作
关联远程仓库:
右键 --- 点击 ' SVN Checkout...'
生成
打开trunk目录,在trunk目录下新建两个文本文件A.java,B.java:
打开A.java输入以下内容:
B.java文件可以随机输入些,本例中主要用于观察后续是否变化。
两个文件编辑完成后使用SVN Commit将更改提交到SVN:
下面开始创建分支:
1、在trunk上点击右键,在TortoiseSVN菜单中选择Branch/Tag;
2、在To path输入框中输入新建分支的路径,一般是:/branches/分支名,也就是相当于分支保存的路径名;
3、在下面选择HEAD revision in the repository,为当前SVN中trunk目录下最新的代码建立分支,如果需要为制定的revision建立分支,可以进行选择;
4、点击OK分支建立完成。
打开branches目录,发现目录依然为空,没有刚才建立的分支,这是因为分支建立的操作是在服务器端完成的,当需要编辑分支时,在branches目录点击Update,刚才建立的分支就会下载下来。
建立分支的过程会非常的快,不会因为主干中的文件多而降低速度,原因后续说明。
注:分支创建成功后,远程仓库可以查看到分支目录,本地仓库(branches)中不生成新的目录,需要 Update 下来
使用TortoiseSVN合并分支
在实际工作中,有可能存在主干、分支并行开发的情况,下面我们模拟一下。
将刚才新建的分支Update下来,打开分支中的A.java,对其进行编辑如下:
在打开trunk主干中的A.java,对其进行编辑如下:
对以上两个文件的改动基本上模拟了分支、主干并行的情况,两个目录下的同一个文件被分别修改。
将以上两个文件的改动Commit,下面进行合并操作。
下面开始合并分支到主干:
1、在trunk上点击右键,在TortoiseSVN菜单中选择Merge;
2、在弹出的窗口中选择第二项,可以理解为合并两个树;
3、在From和To中都选择要合并的分支目录;
4、在From的Revision选择创建分支时的那个Revision,具体就是点击Show log,选择最下面那一条;
5、在To的Revision选择HEAD Revision,也就是最新操作;
6、点击Next,下一个页面使用默认项,点击Merge;
7、合并完成。
这时候会发现trunk目录下的文件已被修改,这时候的合并操作是在本地完成的,并没有提交到SVN,这与分支建立时有区别,请注意。
也就是说如果你在本次合并中发现问题,只需要对trunks目录Revert,放弃本次合并即可。
可以看一下trunk目录合并后的A.java文件,大家与前面对照下,已达到我们想要的合并效果:
创建分支时发生了什么
SVN服务器在创建分支时的拷贝是非常有效率的,瞬间就可以完成,并且只需要很少的空间来存储,所以不需要担心分支建立过多导致项目仓库膨胀的问题。
可以理解为SVN在服务器中存储的是文件的引用,而非物理上的拷贝。
不要多次合并同一个分支到主干
合并分支有一个原则,就是不要对一个分支多次合并到主干,虽然你有可能在合并后又对分支进行了修改,之所以这样说是有原因的。
上面提到在合并分支时,在From的Revision选项中需要选择合并的起始版本,如果是第一次合并只需要选择最早的那个版本即可,但如果合并过一次,你真的能记得你上次合并时最后的Revision是多少吗?
良好的操作是合并后新建分支。
合并主干到分支
其实合并是个可逆的过程,合并主干到分支与合并分支到主干正好是相反的操作,大家如果会了一种另一种应该非常简单。
svn 创建分支、切换分支 及 合并分支 操作的更多相关文章
- svn merge当主干修改后合并分支
例如版本r1的主干创建分支r2,在r2上修改后得到r3,r1之后也修改得到r4,现在合并分支到主干上: 如果r3的修改和r4有冲突会提示出现冲突,因此不用担心主干合并后会被分支操作覆盖,因为这并不是简 ...
- git 创建、切换和提交新分支
查看本地分支 git branch 创建新的分支 git branch <newBranch> 切换分支 git checkout <branchName> 创建并切换分支 g ...
- 二、TortoiseSVN 合并、打分支、合并分支、切换分支
一.合并 点击Edit conflict来编辑冲突: 在合并后的枝干对应栏中编辑后,Save保存后关闭. 二.TortoiseSVN 打分支.合并分支.切换分支 1.SVN打分支 方式一:先检出,再打 ...
- git创建/合并分支/删除分支/将修改后的内容同步到GitHub远程仓库
1.创建分支并切换到刚创建的分支(这里创建新的分支来修改README.md的内容然后将创建的分支与master分支合并,最后删除创建的分支) $ git checkout -b 分支名 Switche ...
- Git创建子分支,合并分支并提交到Gitee码云
Git合并分支后,需要将子分支提交到git仓库,这个时候就需要单独提交子分支,其步骤如下: 先创建子分支,并包含最新当前分支下的修改数据 git checkout -b sonBranch 将新分支内 ...
- git与eclipse集成之创建及切换个人本地分支
创建个人本地特性分支,并进行编码 弹出选择分支的窗口,选择要切换的个人特性分支(备注:根据远程个人特性分支创建本地个人特性分支) 点击OK,Branch name:分支名称与远程分支名称相同,不需要修 ...
- svn与git区别简介,git分支操作在mac客户端soureTree和使用命令行如何实现
svn与git区别简介: 性能方面(经过实践的) svn:下载速度慢,因为它其中的源文件太多,并且在show log日志的时候每次都需要去服务器拉取,速度很慢 git:下载速度快,并且git clon ...
- git总结三、关于分支下——团队合作中最重要的合并分支
合并分支是团队合作开发中常见的操作,这里涉及到两个命令:git merge 和 git rebase 下面来好好说一下git merge和git rebase都是怎样工作的 一. 1.新建一个空目录并 ...
- SVN创建分支/合并分支/切换分支
在建立项目版本库时,可首先建好项目文件夹,并在其中建立trunk, branches, tags三个空的子目录.这样在trunk中开始进行开发 trunk是主分支,是日常开发进行的地方. branch ...
- SVN创建分支/合并/切换使用
原文地址:https://blog.csdn.net/lisq037/article/details/17501327 最近接项目要求,要在svn主干上创建分支,用分支来进行程序的bug修改,而主干上 ...
随机推荐
- Web框架之Django_10 重要组件(Auth模块)
一.auth模块介绍 Auth模块是Django自带的用户认证模块: 我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统.此时我们需要实现包括用户注册.用户登录.用户认证.注销.修改密码等 ...
- (转)去除背景色的方法,适合iOS5/6/7/8.0beta
通常使用UISearchbar都需要去除其背景色来与自己的界面风格保持协调,但是UISearchbar的设计随着iOS版本的升级不断地在发生着变化,下面我们通过分析UISearchbar在各个iOS版 ...
- redis和memcached的优缺点及区别
1. 使用redis有哪些好处? (1) 速度快,因为数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1) (2) 支持丰富数据类型,支持string,li ...
- awk中next以及getline用法示例
在awk中,如果调用next,那么next之后的命令就都不执行了.此行文本的处理到此结束,开始读取下一条记录并操作. 实例如下: [plain] view plain copy zoer@ubuntu ...
- redis安装与安全设置
redis Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库.缓存和消息中间件 yum安装redis 1.yum安装 #前提得配置好阿里云yum源,epel源 # ...
- Python开发:模块
在前面的几个章节中我们脚本上是用 python 解释器来编程,如果你从 Python 解释器退出再进入,那么你定义的所有的方法和变量就都消失了. 为此 Python 提供了一个办法,把这些定义存放在文 ...
- [android篇]声明权限
要实施您自己的权限,必须先使用一个或多个 <permission> 元素在 AndroidManifest.xml 中声明它们. 实际上,在开发过程中,当我们使用了某些系统特性的功能,且此 ...
- Snmp的学习总结(一)
摘自:http://blog.csdn.net/shanzhizi/article/details/11606767 目录(?)[-] SNMP的5种协议数据单元 SNMP的运行过程 11 Get ...
- bzoj[HNOI2015]亚瑟王 - 递推与动规 - 概率与期望
[bzoj4008][HNOI2015]亚瑟王 2015年4月22日3,2991 Description 小 K 不慎被 LL 邪教洗脑了,洗脑程度深到他甚至想要从亚瑟王邪教中脱坑. 他决定,在脱坑之 ...
- docker命令解析
1.docker run --name lllllll -d -p 8080:8080 -p 9000:9000 镜像id 将docker8080端口映射到服务器的8080端口 ...