SVN基础
# SVN基础
# 1. svn简介
# 0. 什么是svn?
SVN是subversion的缩写,是一个开放源代码的版本控制系统,通过采用分支管理系统的高效管理,简而言之就是用于多个人共同开发同一个项目,实现共享资源,实现最终集中式的管理.
1. 代码版本管理工具
2. 能够记住每次修改的内容
3. 查看所有的修改记录
4. 回复到任何历史版本
5. 恢复已经删除的文件
2
3
4
5
# 1. svn跟git比较
使用简单,上手快
目录级权限控制,企业安全必备
子目录Checkout,减少不必要的文件检测
# 2. svn主要应用
- 开发人员用来做代码的版本控制
- 用来存储一些重要的文件,比如合同.
- 公司存储内部文件共享,并且能按照目录划分权限
# 3. svn仓库(服务端)
推荐: https://svnbucket.com/
# 4. svn客户端安装及汉化
资源链接:https://pan.baidu.com/s/1Zx7q5wBlwrbkLmsGp2vPtg 提取码:b0gj
安装步骤: 略
# 2.SVN快速上手
# 1. Checkout同步代码
- 项目详情-源码页面-复制SVN地址
- 在你需要保存代码的地方右键选择“SVN Chekout…”
- 填写仓库地址,填写保存目录,输入网站登录用户名密码。
- 点击确定就能同步代码到本地了。
如果你还没有代码仓库,你可以到 SVNBucket (opens new window)注册一个。
# 2. Update更新代码
右键 SVN Update 就能更新代码了
# 3. Commit提交代码
提交代码也很简单,右键“SVN Commit…”,填入提交描述,就可以把本地提交的代码提交到服务器了。
在提交代码前我们应该update下代码,这是个好习惯,可以避免覆盖别人的代码和代码冲突。
# 4. 忽略文件
有时候某些目录或者文件我们不想提交到 SVN 服务器,这时我们可以忽略这些文件。 下面演示忽略 temp 目录和 *.map 文件
撤销忽略,文件的操作方式步骤是一样的,目录的有点不一样,请看下面演示
# 5. 撤销本地修改
有时候我们本地修改了一些文件,但是突然又不需要了,想丢弃本地的修改回去SVN上最新的版本怎么操作呢? 右键选中需要撤销的文件,TortoiseSVN->Rever就可以丢弃本地修改了。
# 6. 撤销已经提交的代码
已经提交到SVN仓库的代码发现改错了,还能后悔撤回吗?
- TortoiseSVN==>show log查看提交记录
- 选择我们需要回去的版本,右键选择"Revert to this version",这样就回去了指定的版本
- 最后你还需要commit下撤销后的代码到SVN仓库
# 7. SVN仓库目录和开发建议
我们建议每个仓库的根目录都创建trunk、branches、tags目录,这是经典的 SVN 目录结构,方便开发和维护
个人比较喜欢的开发模式是,开发时都在trunk写代码,上线产品后就创建分支到branches目录,线上版本出问题了,我们应该在对应的分支上进行修复,并且把修复后的代码合并到主干上。
# 8. 如何创建分支
以上面的目录结构为例子,我们从当前主干创建一个分支出去,表示1.0版本,操作步骤如下:
- 右键trunk目录=>TortoiseSVN=>Branch/tag
- 填写分支路径/branches/online1.0,填写注释,选择最用最新的版本开分支,如下:
# 9. 如何合并代码
假设我们在分支上修复了一个线上的BUG,需要把代码那个代码合并到主干来,操作步骤:
- 在分支的跟目录点击show log
- 选中需要合并过去主干的提交记录(可以多选)
- 点击merge revision to …
- 选择主干的跟目录,点击确定,就合并过去了。
- 在主干上提交这次合并的内容
SVN的这个指定提交记录合并功能非常的方便,我们日常中经常会遇到线上出问题需要修复,修复后把代码合并到主干的情况。
你在分支上的什么目录点击合并,那就需要定位到主干的对应目录合并,不然会出错。
另外如果你有大量的代码需要合并或者不知道哪些提交记录需要合并,可以使用Beyond Compare来进行对比合并,也是非常方便的。
# 10. 切换分支
右键TortoiseSVN=>Switch=>选择需要切换的分支,点击确定就可以了
# 11. 修改仓库地址
如果您的仓库地址变了,是不是需要重新checkout一份代码呢?
快速更换:右键点击仓库根目录 => TortoiseSVN => relocate,修改仓库地址,点击确定后就修改好了
以上资源来自: https://easydoc.top/s/78711005/uSJD1CDg/60815798
# 3.SVN常用命令
首先推荐大家一个应该是国内外最好的SVN仓库,不限私有,不限成员:SVNBucket (opens new window)
# checkout代码
svn co svn://svnbucket.com/xxx/xxx
# 更新代码
svn up
# 提交代码
svn commit -m "提交描述"
# 添加新文件到版本库
svn add filename
# 添加当前目录下所有php文件
svn add *.php
# 递归添加当前目录下的所有新文件
svn add . --no-ignore --force
# 查看指定文件的所有log
svn log test.php
# 查看指定版本号的log
svn svn log -r 100
# 撤销本地文件的修改(还没提交的)
svn revert test.php
svn revert -r 目录名
# 撤销目录下所有本地修改
svn revert --recursive 目录名
# 查看当前工作区的所有改动
svn diff
# 查看当前工作区test.php文件与最新版本的差异
svn diff test.php
# 指定版本号比较差异
svn diff -r 200:201 test.php
# 查看当前工作区和版本301中bin目录的差异
svn diff -r 301 bin
# 查看当前工作区的状态
svn status
# 查看svn信息
svn info
# 查看文件列表,可以指定-r查看,查看指定版本号的文件列表
svn ls
svn ls -r 100
# 显示文件的每一行最后是谁修改的(出了BUG,经常用来查这段代码是谁改的)
svn blame filename.php
# 查看指定版本的文件内容,不加版本号就是查看最新版本的
svn cat test.py -r 2
# 清理
svn cleanup
# 若想创建了一个文件夹,并且把它加入版本控制,但忽略文件夹中的所有文件的内容
svn mkdir spool
svn propset svn:ignore '*' spool
svn ci -m 'Adding "spool" and ignoring its contents.'
# 若想创建一个文件夹,但不加入版本控制,即忽略这个文件夹
svn mkdir spool
svn propset svn:ignore 'spool' .
svn ci -m 'Ignoring a directory called "spool".'
# 切换当前项目到指定分支。服务器上更新新版本我们经常就用这个命令来把当前代码切换到新的分支
svn switch svn://svnbucket.com/test/branches/online1.0
# 重定向仓库地址到新地址
svn switch --relocate 原svn地址 新svn地址
# 创建分支,从主干创建一个分支保存到branches/online1.0
svn cp -m "描述内容" http://svnbucket.com/repos/trunk http://svnbucket.com/repos/branches/online1.0
# 合并主干上的最新代码到分支上
cd branches/online1.0
svn merge http://svnbucket.com/repos/trunk
# 分支合并到主干
svn merge --reintegrate http://svnbucket.com/repos/branches/online1.0
# 删除分支
svn rm http://svnbucket.com/repos/branches/online1.0
# 查看SVN帮助
svn help
# 查看指定命令的帮助信息
svn help commit
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
以上资源来自: https://easydoc.top/s/78711005/uSJD1CDg/33195524