1. 将服务器文件签出到本地
- 签出文件夹
svn checkout svn://192.168.16.68/demo/trunk /home/tom/works/demo/
- 签出文件夹里的全部内容
cd /home/tom/works/demo
svn checkout svn://192.168.16.68/demo/trunk/ .
- 签出某个版本的文件
svn checkout -r 88 svn://192.168.16.68/demo/trunk /home/tom/works/demo/
2. 添加新文件
svn add new.txt #需要提供修改后才能改变服务器里的内容
3. 提交修改
svn commit -m "添加了新文件" new.txt
4. 更新版本
- 全部更新
svn update
- 更新文件到某个版本
svn update -r 88 test.c
5. 删除文件
svn delete test.c -m "删除测试文件" #需要提供修改后才能改变服务器里的内容
6. 查看日志
svn log new.txt
7. 查看文件状态
- 显示文件状态
svn status new.txt
#不显示:正常状态
#?:不受版本控制
#M:内容被修改
#C:发生冲突
#A:预定加入到版本库
#D:预订从版本库中删除
#K:被锁定
- 显示修改状态
svn status -v path
#工作版本号 最后一次修改的版本号 最后一次修改的用户 文件名
#9 9 jerry .
#9 4 wfc a.h
#9 4 wfc array
#9 4 wfc array/array_hosts_for.sh
#9 4 wfc array/array_hosts_while.sh
#9 4 wfc array/count_shells.sh
8. 查看文件信息
svn info new.txt
9. 比较差异
- 比较当前内容和最新版本
svn diff new.txt
- 比较当前内容和某个版本
svn diff -r 88 new.txt
- 比较任意两个版本
svn diff -r 88:99 new.txt
10. 加锁/解锁
svn lock new.txt -m "加锁"
svn unlock new.txt
11. 版本合并
将两个不同的版本进行diff,然后将diff的结果应用的到文件上。
- 正向合并
$ svn merge -r old:new new.txt #old:以前的版本;new:新版本
- 反向合并
如果代码提交后发现需要回滚到旧的版本,则可以使用merge来完成该操作。
$ svn merge -r new:old new.txt #old:要回滚到的版本;new:新版本
12. 解决冲突
在使用svn更新,提交,合并等过程中会出现冲突,其解决是类似的,以下以update为例进行说明,如下图所示:
可以输入e通过编辑修改文件,解决冲突。如果出现 **“没有设置 SVN_EDITOR,VISUAL 或 EDITOR 环境变量”**的问题,则需要设置环境变量:
$ vim ~/.bash_profile #打开bash配置文件,在文件最后添加 export SVN_EDITOR=vim
$ source ~/.bash_profile #使新配置生效
输入e之后,打开编辑器会显示以下内容:
根据实际需求修改文件,解决有冲突的问题,然后保存退出。退出后选择(r)即可更新到最新版本,然后继续自己的修改,最后提交。
对于其他情况的冲突,修改完冲突后,需要重新标记文件为已解决了冲突,如下:
$ svn resolved new.txt
13. 恢复本地修改
$ svn revert new.txt
14. 添加文件夹
- 直接在版本库中添加
$ svn mkdir svn://127.0.0.1/demo/trunk/newDir -m "添加新文件夹newDir"
- 在工作目录中添加,然后提交修改
$ svn mkdir newDir
$ svn commit -m "添加新文件夹newDir"
15. 创建分支
$ svn copy svn://127.0.0.1/demo/trunk svn://127.0.0.1/demo/branches/branch1 -m "创建第一分支"
#如果svn://127.0.0.1/demo/branches/branch1文件夹已经存在,则拷贝trunk文件夹到branch1文件夹下
16. 合并分支到主干
#cd到主干的本地工作目录
$ svn update #需要更新到最新版本,否则会无法合并
$ svn merge svn://127.0.0.1/demo/branches/branch1 #合并分支中的内容到本目录,如果有冲突虚解决冲突
17. 切换代码库URL
$ svn swtich newURL
18. 显示版本库目录下的文件和目录
$ svn list svn://127.0.0.1/demo/trunk