一、什么是SVN

SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS、CVS,它采用了分支管理系统,它的设计目标就是取代CVS。

二、SVN的下载安装

下载地址:https://tortoisesvn.net/downloads.zh.html

安装完不要忘记重启电脑

安装完成后,按下鼠标右键,会看到如下界面:

说明SVN已经安装成功了。

三、SVN的常用操作

1、迁出配置库内容(SVN Checkout)

1)新建或进入目录下(比如E盘),右键 →SVN Checkout

2)URL of repository 填写仓库路径即可

 3)Revision处,“HEAD revision”是指最新版,也可以指定Revision为任意一个版本。

4)点击“OK”按钮后,在弹出的对话框中输入用户名和密码,验证成功后,项目文件开始从远程服务器下载到本地工作目录中:

5)点击“确定”按钮后,即可获取完成,出现如下下载界面:

6)下载完成后,服务器上所有内容会出现在本地文件夹下

2、更新文件(SVN Update)

1)当从配置库迁出相应目录后,他人对服务器上此目录内容进行了修改,则需要再次获取改动内容到本地目录的过程称为更新。更新可以针对一个文件、几个选中的文件或者整个文件目录。

选中要被更新的文件,右键选择“SVN Update”项,如下:

  2)点击“SVN Update”后会弹出窗口显示更新的进度,如下:

    若上述框中的有文件出现亮红,说明来自配置库的内容与你本地修改内容合并时出现了冲突

3、提交更新(SVN Commit)

1)本地文件修改后,若是需要更新到服务器上,则需要提交(Commit)最新的更新。

  Commit的作用是将本地最新修改的文件同步到SVN服务端,供其他人来参考或者使用,当然使用之前,要先Update一下,来确保是最新的,在修改文件上击右键,出现菜单,选择“SVN Commit…”,如下:

2)然后填写关于本次更新的日志(log message),这是必填项,否则commit会失败,如下:

3)当出现下图所示提示框,则表明刚刚的修改已成功提交,并且当前的SVN版本号加1。

4、增加文件(Add)

1)将需要增加的新文件放入到本地迁出的文件夹TestManger目录的相应位置中,鼠标选中新文件右键选择“Tortoise SVN”的“Add”项,如下图所示:

2)鼠标选中TestManger文件夹右键选择“SVN Commit…”,将新文件上传配置库对应文件夹中(若只上传单个文件,只需点中单个文件上传即可)。

5、检查更新(Check for modifications)

1)此功能可以显示本地对文件所做的修改有哪些还没有提交。不光能看到对文件的修改变化,还包括增加文件或目录,删除文件或目录,移动文件或目录等。当他人提交了哪些文件的改动,也可通过此项来进行查询。

6、删除文件(Delete)

1)选中要被删除的文件,右键选择“Tortoise SVN”的“Delete”项,如下:

2)删除文件后,鼠标选中TestManger文件夹右键选择“SVN Commit…”项进行提交,提交方式同增加文件的提交方式,提交后则将新文件从配置库中删除。

7、撤销更改(Revert)

在修改了某些文件后(文件未上传到配置库),需要返回到修改前的状态,则选中文件夹右键选择“Tortoise SVN”的“Revert...”项进行撤销,本地硬盘上的文件将恢复到修改前的内容,修改的内容将被删除。

8、锁定和解锁(Get lock and Release lock)

当项目需要时可以在本地硬盘中将迁出的内容进行锁定,选中要被锁定的文件右键选择“Tortoise SVN”的“Get lock...”项进行锁定(锁定后他人将无法修改此文件),系统弹出锁定信息框。   当文本文件锁定后,需要通过解锁他人才能继续对文件进行修改。

选中被锁定的文件右键选择“Tortoise SVN”的“Release lock…”项进行解锁。

9、重命名文件(Rename

修改文件名,选中需要重命名的文件或文件夹,然后右键“Tortoise SVN”的“Rename”,在弹出的对话框中输入新名称,点击“OK”按钮,并将修改文件名后的文件或文件夹“SVN Commit…”提交到SVN服务器上。

10、获取历史文件(Show log)

Show log顾名思义是显示日志的作用,主要是显示该文件或者该目录被执行的操作,是被谁修改了,以及修改的时间和日期。鼠标选中文件夹右键选择“Tortoise SVN”的“Show log”项,系统弹出此路径下的所有文件版本信息,如下:

四、SVN的分支合并及冲突的解决方法

1)svn多分支合并主干方法

分支a合并到本地主干后,本地主干提交代码到svn主干,这时主干版本改变,分支b再提交代码到主干会报冲突,版本不统一,这时的解决办法是:
方法1.将主干代码合并到分支b,提交分支b代码到主干即可。
方法2.将分支b代码合并到分支a,提交分支a代码到主干即可。
总之,要避免主干提交后,主干和另一分支的版本冲突问题即可。

2)svn多分支合并主干冲突:svn Working copy and merge source not ready for reintegration

猜测原因:分支主干版本不一致,导致同一文件被认为是不同文件,所以无法合并(A,B两文件合并时也报此错)

解决方法:

分支合并主干产生冲突问题: svn Working copy and merge source not ready for reintegration

原文地址:http://heisetoufa.iteye.com/blog/1736189

错误信息

Working copy and merge source not ready for reintegration 
svn: 'svn://xxx/TestImpl.java@4530' must be ancestrally related to 'svn://xxx/TestImpl.java@4394'
    Merge completed abnormally.
在使用svn的merge过程中,遇到了N多的麻烦
这次遇到的麻烦的具体表现为: 
在主干合并分支中的代码,报错
解决办法为: 
假如需要合并的文件名为:TestImpl.java 
1.在主干的文件上,右键->Team->Copy->选择分支的路径->OK. 
2.到分支的文件夹中找到新copy进来的文件,就是Copy Of TestImpl.java 
3.把分支的TestImpl.java改名为TestImpl2.java 
4.把Copy Of TestImpl.java改名为TestImpl.java 
5.把TestImpl2.java的内容全部覆盖掉TestImpl.java中的内容 
6.把TestImpl.java文件名中的TestImpl2全部改为TestImpl 
7.删除Copy Of TestImpl.java 
8.提交分支的TestImpl.java 
9.在主干的TestImpl.java上进行合并.这个时候svn就不报错了,可以正常的合并代码了

这个错误造成的原因,应该是主干与分支的文件,没有关联关系.通过以上步骤,相当于是给主干和分支建立了关联关系,他们有了主次关系,才能进行合并. 
可是有一点不明白的是,我分支的TestImpl.java是新建的,并且已经通过merge给了主干,但是改了分支后,再在主干merge的时候,却报出了以上的错误

  1. 3)分支合并主干示例 (附例)
  2. 1.主干工程右键选择 merge 合并下一步
  3.  
  4. 2.选中 merge two different trees 下一步
  5.  
  6. 3.from 主干版本路径,版本号选择分支分出去的版本号
  7.  
  8. to 合并的分支目录,版本号一般最新版本
  9.  
  10. 下一步
  11.  
  12. 4.选择属性,一般直接下一步即可
  13.  
  14. 5.下一步完成。若无冲突直接主干提交代码即可。
  15.  
  16. 若存在冲突解决办法,个人建议使用最后一种解决冲突
  17.  
  18. Mark as conflicted. I will deal wiht it later. --标记冲突,合并到主干解决冲突
  19.  
  20. Resolve the conflict by using my version of the file. --直接用主干的文件覆盖,分支修改无效
  21.  
  22. Resolve the conflict by using the incoming of the file. --直接用分支修改覆盖主干,以分支为准
  23.  
  24. Let me edit the file with conflict markers inserted. --直接编辑冲突,编辑完保存,选择yes保存。
  25.  
  26. Launch a graphical conflict resolution editor.--直接比对文件,修改冲突,点击保存。选择yes解决冲突

本文转载于:https://www.cnblogs.com/zhoumiao/p/5459552.html 和  http://blog.csdn.net/aya19880214/article/details/45894863

SVN的使用、分支合并及解决冲突详解的更多相关文章

  1. git使用,多分支合并代码解决冲突,git删除远程分支,删除远程master默认分支方法

    git使用,多分支合并代码解决冲突,git删除远程分支,删除远程master默认分支方法提交代码流程:1.先提交代码到自己分支上2.切换到devlop拉取代码合并到当前分支3.合并后有变动的推送到自己 ...

  2. Mac svn使用学习-4-客户端cli命令详解

    客户端cli的使用 WC:Working Copy 你的工作区 将文件或目录版本化,这样下一次提交到存储库的时候,他们就都会被提交上去.能实现版本化的命令有: add 1.import 是否访问存储库 ...

  3. 基于ORA-12170 TNS 连接超时解决办法详解

    转自原文 基于ORA-12170 TNS 连接超时解决办法详解 1.开始----程序-----Oracle------配置和移植工具-----Net Manager----本地----服务命名---o ...

  4. Git for Windows之分支管理、分支合并、解决分支冲突

    分支是在稳定版本出现bug的情况下,通过分支技术,在保证稳定版本稳定的情况,修改稳定版本的(差异下载的,速度极快,不同于SVN等技术,会将所有的代码下载到本地)副本,通过合并,解决冲突,最后回归到稳定 ...

  5. 1git命令的使用,查看git仓库状态,添加文件到git跟踪,git提交,查看git分支,查看git仓库日志信息,切换git分支,解决git分支合并后出现冲突的问题

    1新建一个存储git的文件夹,命令是: toto@toto-K45VD:~$ mkdir gitfolder 2初始化一个git仓库,命令是: toto@toto-K45VD:~$cd gitfold ...

  6. git常用命令速查:创建,修改提交,撤销,切换分支,合并分支,变基解决冲突

    创建 $ git init  #在当前目录下创建一个空的本地仓库 $ rm -rf  .git  #删除本地仓库 $ git add .  #把当前目录下的所有文件添加到暂存区 $ git commi ...

  7. 版本控制之三:SVN合并及解决冲突(转)

    转自 http://www.cnblogs.com/xiaobaihome/archive/2012/03/20/2408089.html 接下来,试试用TortoiseSVN修改文件,添加文件,删除 ...

  8. [SVN]两个分支合并

    Date:2014-1-1 Summary: 记录一下自己使用SVN时候的操作步骤,先吃鱼,再学钓鱼 Contents: 环境:从同事的branch迁出一份代码,作为自己的分支进行开发,同时同事也在自 ...

  9. 四、git学习之——分支管理、解决冲突

    分支就是科幻电影里面的平行宇宙,当你正在电脑前努力学习Git的时候,另一个你正在另一个平行宇宙里努力学习SVN. 如果两个平行宇宙互不干扰,那对现在的你也没啥影响.不过,在某个时间点,两个平行宇宙合并 ...

随机推荐

  1. 洛谷 P4503 [CTSC2014]企鹅QQ 解题报告

    P4503 [CTSC2014]企鹅QQ 题目背景 PenguinQQ是中国最大.最具影响力的SNS(Social Networking Services)网站,以实名制为基础,为用户提供日志.群.即 ...

  2. json数据的格式

    JSON的具体形式 1.对象是一个无序的“‘名称/值’对”集合.一个对象以“{”开始,以“}”结束.每个“名称”后跟一个“:”,“‘名称/值’对”之间使用“,”分隔. 举个例子: { name:&qu ...

  3. OpenCV---模糊操作

    推文:图像平滑处理(归一化块滤波.高斯滤波.中值滤波.双边滤波) 推文:图像的平滑与滤波 模糊操作 三种模糊操作方式 均值模糊 中值模糊 自定义模糊(可以实现上面两种模糊方式) 原理: 图像处理:基础 ...

  4. 在vue中使用animate.css

    animate.css是一款前端动画库,相似的有velocity-animate 用法: 首先 npm install animate.css --save 然后在vue文件的script中引入: i ...

  5. DES加密解密类

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.S ...

  6. HDU 1299 基础数论 分解

    给一个数n问有多少种x,y的组合使$\frac{1}{x}+\frac{1}{y}=\frac{1}{n},x<=y$满足,设y = k + n,代入得到$x = \frac{n^2}{k} + ...

  7. MongoDB常用方法

    一.查询 find方法 db.collection_name.find(); 查询所有的结果: select * from users; db.users.find(); 指定返回那些列(键): se ...

  8. NYOJ 1063 生活的烦恼 (二叉树)

    题目链接 描述 生活的暑假刚集训开始,他要决心学好字典树,二叉树,线段树和各种树,但生活在OJ上刷题的时候就遇到了一个特别烦恼的问题.那当然就是他最喜欢的二二叉树咯!题目是这样的:给你一颗非空的二叉树 ...

  9. 26、Python的可变类型和不可变类型?

    Python的每个对象都分为可变和不可变 可变:列表.字典 不可变:数字.字符串.元祖 对不可变类型的变量重新赋值,实际上是重新创建一个不可变类型的对象,并将原来的变量重新指向新创建的对象(如果没有其 ...

  10. 固定bottom,页面其它可滑动实现方案

    利用flex布局, <html> <body> <div class='container'> <div class='content'></di ...