.使用 SVN 终端命令 (个人开发)
1.SVN 帮助
svn help 查看全部功能选项
2.初始化项目
例 svn help import 查看怎么导入 输出 import [PATH] URL
[PATH]本地路径 URL 服务器地址
//本地初始化一个项目
//把一个工程导入服务器
svn import 本地路径 服务器地址 -m
//-m 表示上传文件的描述
3.//把服务器的文件夹下载到本地
//本地建一个文件夹 cd 文件夹 进去文件夹的路径,
svn checkout 服务器地址 或 svn checkout URL[@REV]... [PATH]
4.查看修改的文件
首先cd 进入本地文件夹
svn status //查看被修改的文件
5.提交文件
svn commit -m
//例 svn commit -m "abc"
6.添加文件 svn add 需要添加的文件
//例 svn add cha.h cha.m
7.删除文件 svn remove 需要删除的文件
//例 svn remove cha.h cha.m
8.svn log 查看日志
9.更新文件
svn update //后面没有目录,默认将当前目录以及子目录下的所有文件都更新到最新版本
svn update -r 修正版本 文件名
svn update 文件名
10、查看文件详细信息
svn info path
11恢复本地修改
svn revert [--recursive] 文件名
注意: 本子命令不会存取网络,并且会解除冲突的状况。但是它不会恢复被删除的目录。
例子:
svn revert foo.c <- 丢弃对一个文件的修改
svn revert --recursive . <-恢复一整个目录的文件,. 为当前目录
12、新建一个分支copy
svn copy branchA branchB -m "make B branch" // 从branchA拷贝出一个新分支branchB
13、合并内容到分支merge
svn merge branchA branchB // 把对branchA的修改合并到分支branchB
使用 svn 多人开发
1.首先本地新建文件夹
cd 进入文件夹
2.把服务器的文件夹下载到本地
svn checkout 服务器地址 --username=用户名 --password=密码
3.提交文件需要加上--username=用户名
svn commit -m --username=用户名
//例 svn commit -m "abc" --username=用户名
4.其他命令一样
5.解决冲突
.我提交一个修改的文件到服务器,另一个人同时也修改了这个文件,代码没有更新,直接提交,这时因为版本不一样
报错 超时
.另一个人需要先更新代码,但是由于两个人同时修改一个文件会产生冲突,这时会有三种情况
Select: (P) postpone, (df) diff-full, (e) edit //延迟处理
(mc) mine-conflict, (tc) theirs-conflict //保留我的 , 保留另外一个人的
(s)show all options://在这里选这结果
//选择延迟处理本地会出现三个文件
选择同时修改的文件删除<<<<<<< 我的代码 >>>>>>>>>服务器的代码 保留两份代码,两份代码已经合在一起
执行 svn resolved [本地目录全路径]
svn commit -m"解决冲突" --username=用户名
版本回退
1.恢复本地修改
svn revert [--recursive] 文件名
2.服务器代码版本回退
svn merge main.m -r 3:2
//main 要恢复的文件 3:2 当前最新的版本恢复到2版本
3.svn update -r 修正版本 文件名 //这只能修改本地文件版本号,
//要想把服务器文件版本号改变,这是可以提交,此时会产生冲突,利用冲突来修改服务器的代码
svn st 显示的文件状态
' ' 没有修改
'A' 被添加到本地代码仓库
'C' 冲突
'D' 被删除
'I' 被忽略
'M' 被修改
'R' 被替换
'X' 外部定义创建的版本目录
'?' 文件没有被添加到本地版本库内
'!' 文件丢失或者不完整(不是通过svn命令删除的文件)
'~' 受控文件被其他文件阻隔
命令 |
功能 |
使用格式 |
checkout |
检出 |
svn co URL |
up |
更新到当前URL的末端 |
svn up |
switch |
更新到某一tag/branch |
svn switch (tag/分支)URL |
add |
增加 |
svn add 文件名 |
rm |
删除文件 |
svn rm 文件名 |
删除目录 |
svn rm 目录名 |
|
diff |
与base版本(最后检出或者更新到的版本)对比 |
svn diff |
与版本库中最新版本对比 |
svn diff -r head |
|
当前工作副本,两个版本之间对比 |
svn diff -r reversion1:reversion2 |
|
版本库中任意两个tag做对比 |
svn diff (tag1)URL (tag2)URL |
|
ci |
提交 |
svn ci -m "commit log" |
log |
查看当前工作副本log |
svn log |
只查看指定版本的log |
svn log -r |
|
打印log所有附加信息 |
svn log -v |
|
查看当前tag/branch版本详情 |
svn log --stop-on-copy -v |
|
info |
查看当前工作副本所在URL |
svn info |
status |
查看工作副本的状态 |
svn st |
查看文件的taglist |
svn命令不支持,可执行cs taglist |
|
tag |
新增tag |
svn cp . (tag)URL |
删除tag |
svn rm (tag)URL -m "commit log" |
|
覆盖已经存在的tag |
不支持 |
|
分支开发 |
创建branch |
svn cp (基线版本)URL (分支)URL -m "commit log" |
删除branch |
svn rm (分支)URL -m "commit log" |
|
同步 |
svn co (主干)URL |
|
cd ~/wc |
||
svn merge (主干)URL (待同步tag)URL |
||
svn ci -m "commit log" |
||
svn cp (主干)URL (以_PD_BL_MAIN结尾的tag)URL -m"commit log" |
||
合并 |
svn co (合并目标)URL |
|
cd ~/wc |
||
svn merge (基线版本tag)URL (上线tag)URL |
||
svn ci -m "commit log" |
||
svn cp (合并目标)URL (上线tag_MERGE_的tag对应)URL -m"commit log" |