svn与git的区别以及SVN软件使用

Posted Jocelin47

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了svn与git的区别以及SVN软件使用相关的知识,希望对你有一定的参考价值。

版本控制分为集中式和分布式。

集中式版本控制系统

版本库是集中存放在中央服务器的,而干活的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,然后开始干活,干完活了,再把自己的活推送给中央服务器。集中式版本控制系统最大的毛病就是必须联网才能工作。主要代表就是SVN。
好处:每个人都可以一定程度上看到项目中的其他人正在做些什么。而管理员也可以轻松掌控每个开发者的权限。
缺点:只能有一个中央服务器,存在中央服务器的单点故障 。

分布式版本控制系统

分布式版本控制系统根本没有“中央服务器”,每个人的电脑上都是一个完整的版本库,这样,你工作的时候,就不需要联网了,因为版本库就在你自己的电脑上。比方说你在自己电脑上改了文件A,你的同事也在他的电脑上改了文件A,这时,你们俩之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。主要代表就是Git

一、SVN使用教程

1.SVN是什么?

代码版本管理工具
它能记住你每次的修改
查看所有的修改记录
恢复到任何历史版本
恢复已经删除的文件

2.与git比的优势

使用简单,上手快
目录级权限控制,企业安全必备
子目录Checkout,减少不必要的文件检出

3.主要应用:

开发人员用来做代码的版本管理
公司内部文件共享,并且能按目录划分权限

4. SVN仓库

推荐:svnbucket.com,SVN桶,现在最好用的SVN服务

5.安装SVN客户端

TortoiseSVN(Windows)
Cornstone(Mac)

二、linux下搭建SVN服务器

1. 安装svn服务器软件subversion。

apt-get install subversion

2. 初始化svn目录。

svnadmin create /home/book/svn/test_project

3. 使用svn:// 协议主要需要配置conf目录下的三个文件。


1) svnserve.conf : svn仓库服务配置文件

2)authz : 用户权限配置文件

//groups 下存放分组下的用户 多个用户用,分割

[groups]

admin=harry,sally

//用相对路径表示要确定的目录 @组名 指定该组下所有用户的权限 也可以直接指定单个用户的权限

[/]

rw代表可读可写,r代表只读,* = 代表无任何权限

3)passwd: 用户密码配置文件

4. 启动svn服务器

# -d 表示守护进程 -r 指定启动的根目录 --log-file 指定日志的位置
svnserve -d -r /home/book/svn/test_project --log-file=/var/log/svnserve.log

测试是否可以连接

book@www.100ask.org:~/svn/test_project/conf$ svn co svn://10.16.109.219/
取出版本 0

5.客户端checkout

三、SVN基本操作

检出 checkout
新增
提交
更新
历史记录

在svnbucket官网上构建服务器
在svnbucket官网注册账号,创建私有项目。

PC下选择一个工作目录,选择svn检出


输入url后再输入自己的账号密码

出现绿色的标志,代表文件和服务器同步。

加入几个文件,点击SVN提交

选中文件后,确定提交。所有的文件和文件夹都有绿色的勾,与官网同步。


官网上面也收到我们的提交记录。

现在更改一个文件,出现红色的感叹号

再点击提交,双击文件可以看到差异。

提交后,官网上就可以看到更新后提交的代码。

通过显示日志,可以看到自己的提交记录以及更改代码的内容详情。

四、解决冲突

1. 什么时候发生冲突?

  1. 多个人修改了同个文件的同一行
  2. 无法进行合并的二进制文件

2. 怎么避免冲突?

  1. 经常update同步下他人的代码
  2. 二进制文件不要多个人同时操作

    可以选择选择自己的或者别人的文件解决冲突,或者点击编辑冲突查看跟别人的区别

五、svn创建分支操作

什么时候需要开分支?

  • 隔离线上版本和开发版本
  • 大功能开发,不影响到其他人,自己独立开个分支去开发

建议每个仓库的根目录都创建trunk、branches、tags目录,这是经典的 SVN 目录结构,方便开发和维护

一般开发模式是,开发时都在trunk写代码,上线产品后就创建分支到branches目录,线上版本出问题了,我们应该在对应的分支上进行修复,并且把修复后的代码合并到主干上。

1. 创建分支

(1) 右键 trunk 目录 => 右键TortoiseSVN => Branch/tag
填写分支路径/branches/version1.0,填写注释,选择最用最新的版本开分支,如下

2. 如何合并代码

假设我们在分支上修复了一个线上的BUG,需要把代码那个代码合并到主干来,操作步骤:
对在分支文件的readme修改后,想要合并到主干上


如果想要合并多个,可以选择多个。

选择合并版本到

文件出现感叹号,重新点击提交,点击最近信息可以看到最新的信息。

3. 切换分支

对合并后的主干网络现在建立分支2.0

进入分支目录下点击版本库浏览器

可以看到两个版本

对原来的version1.0点击切换

选择2.0

切换成功后,点击文件属性,可以看到URL已经是2.0了,但是文件名还是要修改,或者名字就不要版本号了。

六、代码暂存

使用情况:
1.代码改了很多,突然需要紧急修复一个bug,但是代码还没写完,不能提交。
2.代码重构了很多,突然需要发布新版本,但是代码还跑不起来,不能提交。

修后文件后点击储藏

点击储藏会把修改的文件列出来。

点击取消储藏

如果对相同的名称储藏两次就会出现两个版本,点击应用后就可以把储藏的代码恢复出来。

以上是关于svn与git的区别以及SVN软件使用的主要内容,如果未能解决你的问题,请参考以下文章

svn与git的区别以及SVN软件使用

svn与git的区别以及SVN软件使用

git与svn的区别简介git进阶

SVN中检出 和 导出 的区别

git与SVN的区别

git 与 svn的区别