svn学习笔记
SVN学习笔记
目录
6.2在自己的工作目录下,鼠标右击,选择SVNCheckout
6.3点击进入demo文件夹,可以创建文件,使用SVN对文件进行管理
1.SVN是什么?
1.代码版本管理工具
2.它能记住你每次的修改
3.查看所有的修改记录
4.恢复到任何历史版本
5.恢复已经删除的文件
2.SVN跟Git比,有什么优势?
1.使用简单,上手快
2.目录级权限控制,企业安全必备(而git则没有权限控制,因为每个成员都可以克隆一整个文件。)
3.子目录Checkout,减少不必要的文件检出
4.主要应用:开发人员用来做代码的版本管理
5.用来存储一些重要的文件,比如合同
6.公司内部文件共享,并且能按目录划分权限
3.SVN仓库
推荐: svnbucket.com,也叫SVN桶,是现在最好用的SVN服务
4.安装SVN客户端
TortoiseSVN(windows)
Cornstone(mac)
5.上手文档
可以在点击上图的“各种SVN客户端”下载客户端
6.SVN基本操作:
检出 checkout
新增 add
提交 commit
更新 update
历史记录
6.1在SVNBucket新建项目
可以暂时不勾选“自动创建trunk、branches、tags目录结构”,后面可以手动创建。
6.2在自己的工作目录下,鼠标右击,选择SVNCheckout
文件夹中有绿色的√,说明已经和SVN的服务端同步了;如果没有绿色√,可以重启电脑看看绿色√是否出现。
6.3点击进入demo文件夹,可以创建文件,使用SVN对文件进行管理
6.3.1提交到SVN服务端
下面右击空白处将所有文件进行管理,提交一些文件
进入SVNBucket网站可以看到提交的源码文件和记录
此时再点击SVN Update更新,是不会有变化的,因为我们的代码文件还没有变化。
6.3.2更新到SVN服务端(每次更新:提交前SVN Update一次,提交完再SVN Update一次!!!不是第一次提交上去的都是记得使用更新的步骤!!!)
下面更改代码文件,对代码进行更新(更改代码后需要SVN Update更新再SVN Commit提交,因为团队成员可能也提交了,不更新容易和别人的代码起冲突)
右击空白处选择SVN Update
最后需要再点击一下SVN Update,同步服务端代码!!!
6.3.3查看日志,查看所有的记录
双击文件也可以看到相应的变化
7.撤销和恢复
撤销本地修改
撤销已提交内容
恢复到指定版本
7.1撤销本地修改
一般修改完代码后,文件会出现红叹号。
修改编写代码后,发现自己在代码中写了错误的内容。这个时候我们需要撤销本地修改(因为只是修改了内容,但是还没有提交,所以只需要撤销本地修改)
撤销本地修改第一种方法:右击-->TortoiseSVN-->SVN还原(Revert)
此时发现代码还原了
撤销本地修改第二种方法:SVN Commit-->右击需要还原的文件-->Revert
7.2撤销已提交内容
将错误的内容提交到SVN服务端了,这时需要撤销已提交的内容。
首先看一下提交记录:
点击查看提交的内容:
查看变更的内容:(点击SVN Commit然后双击文件查看)
目前只是已经完成了在本地的撤销,还需要再提交到SVN服务端去 (提交的步骤)
7.3恢复到指定的版本
首先看一下提交记录:
8.忽略文件、文件夹
有时候我们不想提交一些文件,那么我们就可以忽略它。
第一种:例如忽略image目录
再进行提交:
第二种:在src文件夹下有个test.txt,想要忽略它
方法一:先按提交步骤-->再右击文件-->增加到忽略列表-->再提交到SVN服务端
方法二:直接右击test.txt文件-->Tortoise SVN-->Remove from ignire list-->test.txt-->提交
注意:从忽略列表删除,步骤是类似忽略列表的操作的
9.什么情况容易发生冲突?
1.多个人修改了同个文件的同一行
2.无法进行合并的二进制文件
怎么避免冲突?
经常update同步他人的代码
二进制文件不要多个人同时操作
9.1 多个人修改了同个文件的同一行
产生冲突,产生多个文件,分别为版本7和9,还有我的,一共三个文件
选择法三后:
9.2无法进行合并的二进制文件(二进制文件冲突)
接着,另外一个人也修改了这张图片,这时就会产生冲突。
10.什么时候需要开分支?
1.隔离线上版本和开发版本
2.大功能开发,不想影响到其他人,自己独立开个分支去开发
SVN经典目录结构:
- trunk:主干,主要存放开发中的文件,开发完成之后,开一个分支将对应的版本存放在branches里面
- branches
- tags
下面手动新建trunk、branches和tags 文件夹,将原来的所有文件放在trunk下面,再将三个大文件夹的内容提交
当我们trunk主干开发完成了,准备上线了,那么我们可以开一个线上版本:
分支成功。接着更新一下,再进入branches文件夹里面可以看到onlinev1.0文件夹,如下:
在onlinev1.0中的文件和trunk当前已经提交了的文件(绿色√)一样。
但是这样也会有个问题,当分支越来越多的时候,需要更新的内容也就越来越多了,所以我们可以单独把分支checkout出来一份。
trunk也可以按照类似的步骤checkout出来。这样在目录中就有一个单独的主干(trunk)和单独的分支(onlinev1.0)了。
下面将主干trunk也checkout出来:
这是可以把包含所有主干和分支的demo目录删除了。删除后,就剩主干project-trunk和project-onlinev1.0了。
主干和分支的修改是相互不会影响的。一般线上版本出现问题的时候,才在线上版本作修改并提交等等的操作(线上问题的修复),但是当线上版本修复之后,主干并没有被修复,这时候我们需要做的并不是在主干上也按照同样的步骤进行同样的修改,而是可以将线上版本合并到主干。
下面修改(修复)project-onlinev1.0,当线上版本修复后,提交线上版本:
线上版本修复后但是主干版本还没有修复,所以接着,将线上版本的修复合并到truck中:
首先更新一下project-truck
出现冲突,解决冲突
然后关闭上面这个文件。
合并完成后,对主干进行提交。
实现切换分支:
由于当前之后project-onlinev1.0一个分支,所以下面再创建分支project-online2.0切换分支:
现在onlinev2.0,点击OK,切换成功!
我们可以检查一下路径看看究竟是不是v2.0:
根据上面,确定已经切换到了v2.0。
我们还可以查看仓库结构:
11.SVN的代码暂存
有什么用?
1.代码改了很多,突然需要紧急修复一个bug,但是代码还没写完,不能提交。2.代码重构了很多,突然需要发布新版本,但是代码还跑不起来,不能提交。
以上两种情况,我们提交不了本地代码,但是我们可以把本地代码暂存起来,解决完上面的问题后继续开发!
修改代码:
下面的1和2选择一个:
这里演示首先选择2(暂存后本地的修改还会保留): 接着取出暂存看看:
:
下面演示选择1:
说明本地修改被撤销了。下面取出暂存:
恢复了红叹号。
12.复杂代码合并
情况:
1.主干开发新功能,改了很多2.分支是线上版本,修复了很多bug
两个分支的代码时间久了差异很大,无法直接分支合并或者指定提交记录合并代码
方法:使用BeyondCompare工具进行合并