以下是 SVN(Subversion)常用二级命令的详细说明及使用示例,按功能分类整理,结合应用场景和参数解析,便于快速掌握核心操作。
📁 一、基础操作命令
checkout (co)
功能:从版本库检出代码到本地工作副本。
语法:svn checkout
示例:
svn co http://svn.example.com/project/trunk # 检出主干
svn co -r 202 http://svn.example.com/project/trunk mydir # 检出特定版本到mydir目录
关键选项:-r 指定版本号 。
update (up)
功能:将本地工作副本更新至版本库最新状态。
语法:svn update [路径]
示例:
svn up # 更新当前目录
svn up -r 305 # 回退到版本305
注意:若提交时提示“过期”,需先更新解决冲突 。
commit (ci)
功能:提交本地修改到版本库。
语法:svn commit -m "提交日志" [路径]
示例:
svn ci -m "修复用户登录Bug" src/auth.c # 提交指定文件
svn ci -m "更新配置文件" # 提交所有修改
选项:--no-unlock 保留文件锁 。
📂 二、文件与目录管理
add
功能:将新文件/目录纳入版本控制。
语法:svn add <路径>
示例:
svn add config.ini # 添加单个文件
svn add docs/ --depth=empty # 仅添加空目录(不包含内容)
注意:需后续执行 commit 生效 。
delete (del, rm)
功能:删除版本库或本地文件。
语法:svn delete
示例:
svn rm old_module.py # 删除本地文件并标记待提交
svn rm -m "移除冗余模块" http://svn.example.com/project/trunk/old_module.py # 直接删除版本库文件
推荐流程:先本地删除再提交 。
mkdir
功能:创建纳入版本控制的目录。
语法:
svn mkdir <本地路径> # 本地创建(需提交)
svn mkdir
示例:
svn mkdir new-feature # 本地创建目录
svn mkdir -m "创建docs目录" http://svn.example.com/project/trunk/docs
🔍 三、版本查看与比较
log
功能:查看提交历史。
语法:svn log [路径]
示例:
svn log -l 5 # 显示最近5条日志
svn log -v src/main.c # 查看文件详细修改记录
选项:-v 显示修改文件列表;--stop-on-copy 显示分支起点 。
diff (di)
功能:比较差异。
语法:svn diff [-r 版本1:版本2] [路径]
示例:
svn di # 比较当前所有修改
svn di -r 100:105 app.c # 对比版本100与105的差异
svn di -c 202 # 查看版本202的变更内容
blame (annotate, ann)
功能:逐行显示文件修改者和版本。
语法:svn blame <文件>
示例:
svn ann -r 150:200 utils.py # 查看150到200版本间的修改记录
🌿 四、分支与标签管理
copy (cp)
功能:创建分支或标签。
语法:svn copy <源URL> <目标URL> -m "日志"
示例:
# 创建分支
svn cp http://svn.example.com/project/trunk \
http://svn.example.com/project/branches/feat-login \
-m "创建登录功能分支"
# 创建标签(标记发布版本)
svn cp http://svn.example.com/project/trunk \
http://svn.example.com/project/tags/v1.0 \
-m "发布v1.0"
merge
功能:合并分支或版本差异。
语法:svn merge -r <起始版本>:<结束版本> <源URL> [本地路径]
示例:
# 将分支合并到当前主干
svn merge http://svn.example.com/project/branches/feat-login
# 回滚版本(反向合并)
svn merge -r 305:300 app.py # 将305到300的变更撤销
关键点:合并后需解决冲突并提交 。
⚙️ 五、属性与配置管理
propset (pset, ps)
功能:设置文件属性(如忽略规则)。
语法:svn propset <属性名> <值> <路径>
示例:
svn ps svn:ignore "*.log" logs/ # 忽略logs目录下所有.log文件
proplist (plist, pl)
功能:列出属性。
语法:svn proplist [路径]
示例:
svn pl -v src/ # 显示src目录下所有属性及其值
🛠️ 六、冲突解决与维护
resolve
功能:标记冲突已解决。
语法:svn resolve <文件>
示例:
svn resolve config.ini # 手动编辑冲突后执行
注意:仅标记状态,不自动修改内容 。
cleanup
功能:修复工作副本锁问题。
语法:svn cleanup [路径]
示例:
svn cleanup # 当操作中断导致副本锁定时使用
命令速查表
命令
功能简述
常用示例
svn status (st)
查看工作副本状态
svn st -u (显示更新提示)
svn info
显示版本库信息
svn info (查看当前URL和版本)
svn revert
撤销本地修改
svn revert file.c
svn export
导出干净代码(无.svn目录)
svn export http://svn.example.com/project
svn switch (sw)
切换工作副本指向的分支
svn switch http://svn.example.com/project/branches/dev
更多命令细节可通过 svn help <子命令> 查看(如 svn help merge)。
提示:
使用 -r 指定版本号,支持 HEAD(最新)、BASE(本地基线)等关键字 。
冲突解决流程:update → 手动修改 → resolve → commit 。