SVN(Subversion)是一款广泛使用的版本控制系统,通过命令行可以高效地管理代码版本,以下是SVN命令行的详细使用方法,涵盖常用操作及场景应用。

基础命令
-
检出(checkout)
从SVN仓库下载代码到本地,首次使用时执行:svn checkout svn://仓库地址/项目名 本地目录名
若需指定版本号,可添加
-r
参数,如svn checkout -r 100 svn://...
。 -
更新(update)
同步本地代码与仓库最新版本:svn update
可通过
-r
指定更新到特定版本,或--depth
控制更新深度(如--depth immediates
仅更新直接文件)。(图片来源网络,侵删) -
提交(commit)
将本地修改上传到仓库:svn commit -m "提交说明"
建议添加详细说明,便于版本追溯,若需修改文件属性(如权限),可加
--force
参数。 -
添加(add)
将新文件或目录纳入版本控制:svn add 新文件名
对于目录,递归添加所有子文件需加
--force
参数。(图片来源网络,侵删) -
删除(delete/remove)
从版本控制中移除文件或目录:svn delete 文件名
执行后会标记为删除,需提交才能生效,若直接物理删除,可用
--force
强制操作。
高级操作
-
查看状态(status)
检查本地文件与仓库的差异:svn status
常用参数:
-u
:显示服务器端最新状态-v
:显示详细版本信息--ignore-externals
:忽略外部链接
-
查看日志(log)
查看提交历史记录:svn log -v 文件名
可通过
-l 10
限制显示条数,或--grep
过滤特定提交说明。 -
比较差异(diff)
对比本地与仓库版本,或两个历史版本:svn diff 文件名 # 本地与仓库对比 svn diff -r 10:20 文件名 # 版本10与20对比
输出可通过
> diff.txt
保存到文件。 -
解决冲突(resolve)
合并代码时出现冲突时,标记冲突已解决:svn resolve --accept=mine-full 文件名
参数说明:
mine-full
(保留本地修改)、theirs-full
(保留远程修改)。
分支与标签管理
-
创建分支(copy)
从主干创建分支:svn copy svn://仓库地址//trunk svn://仓库地址/branches/新分支名 -m "创建分支"
-
切换分支(switch)
切换当前工作目录到分支:svn switch svn://仓库地址/branches/分支名 本地目录
-
合并分支(merge)
将分支修改合并回主干:svn merge -r 起始版本:结束版本 svn://仓库地址/分支名 .
常用参数速查表
参数 | 功能 | 示例 |
---|---|---|
-r 版本号 |
指定版本号 | svn update -r 100 |
-v |
显示详细信息 | svn log -v |
--force |
强制执行操作 | svn add --force 目录 |
--depth 深度 |
控制操作深度 | svn update --depth empty |
--ignore-externals |
忽略外部链接 | svn update --ignore-externals |
相关问答FAQs
Q1: SVN提示“working copy locked”如何解决?
A: 通常是因为上一次操作异常中断导致,可执行 svn cleanup
清理锁,若仍失败,手动删除 .svn/lock
文件后重试。
Q2: 如何回退到历史版本?
A: 使用 svn update -r 版本号
回退本地代码,然后执行 svn commit -m "回退到版本X"
提交回退操作,若需彻底删除后续版本,需使用 svn merge -r HEAD:目标版本 .
合并并提交。