入门
svn checkout <url> [<dir>]从仓库检出一个工作副本——首次获取项目文件。
-r <rev> 指定版本;--depth empty|files|immediates|infinity
svn checkout https://svn.example.com/repo/trunk ./my-projectsvn info显示工作副本或 URL 的信息:URL、版本号、最近修改等。
svn info .日常工作
svn update把工作副本与仓库同步;可能自动合并远端变更。
-r <rev> 更新到指定版本;--accept postpone|base|mine-full|theirs-full|edit|launch
svn update --accept postponesvn status查看工作副本状态:修改、新增、删除、未跟踪文件。
-u 显示远端过期信息;-v 详细;--quiet 不显示未跟踪文件
svn status -usvn add <path>将文件或目录标记为下一次提交时新增。
-N 非递归(仅作用于目录本身);--force 添加已纳入版本控制的项
svn add src/utils/ helpers/svn delete <path>在工作副本中删除文件或目录,并标记为下一次提交时删除。
--keep-local 在工作副本中保留文件(不从远端删除)
svn delete obsolete/old-config.jsonsvn commit -m "<msg>"将本地修改提交到仓库,并附上一条日志信息。
-m 直接传消息;-F <file> 从文件读消息;--no-unlock 保留锁
svn commit -m "feat: add login form validation"svn diff显示路径之间或版本之间的 unified diff。
-r <rev1>:<rev2> 比较版本;-c <rev> 显示某个版本引入的变化;--diff-cmd / -x
svn diff -r HEAD~5:HEAD --summarizesvn revert <path>丢弃本地修改,将文件/目录还原为干净状态。
-R 递归;--depth infinite
svn revert -R .分支与标签
svn copy <src> <dst>在仓库内通过复制创建分支或标签(廉价拷贝)。
-r <rev> 从指定版本复制;-m 日志信息
svn copy ^/trunk ^/branches/feature-x -m "branch: feature-x"svn switch <url>将工作副本切换到其他分支/标签,无需重新 checkout。
-r <rev> 切换到指定版本;--relocate 重写 URL 前缀
svn switch ^/branches/feature-xsvn list <url>列出仓库中某个目录下的条目,不必检出。
-v 详细;-r <rev>
svn list -v ^/tags/合并与冲突
svn merge <url[@rev]>将两个源/分支之间的差异合入工作副本。
-c <rev> / -r <rev1>:<rev2> 选择合入的版本区间;--record-only 仅记录 mergeinfo
svn merge ^/trunk -c 12345svn merge --reintegrate <url>将特性分支重新合回源分支(旧式用法,1.8 之前的方案)。
svn merge --reintegrate ^/branches/feature-xsvn resolve <path>在合并/更新后解决文件冲突。
--accept base|mine-full|theirs-full|working|theirs-conflict|theirs-full
svn resolve --accept theirs-full conflict.txt历史与查看
svn log查看文件或整个仓库的提交日志。
-r <rev1>:<rev2> 版本范围;-l <n> 限制条数;-v 显示涉及路径;--xml
svn log -l 20 -vsvn blame <file>逐行显示作者与版本号(praise / annotate)。
-r <rev> 标注到指定版本为止;-v 同时显示版本说明
svn blame src/index.ts | tail -20svn cat <url>[@rev]查看指定 URL/版本的文件内容,无需检出。
svn cat ^/trunk/README.md@HEAD属性与锁
svn propset <prop> <value> <path>为文件或目录设置属性(如 svn:ignore、svn:executable、svn:mime-type)。
-F <file> 从文件读取属性值;--revprop 操作仓库 revprop
svn propset svn:ignore "node_modules\n.DS_Store" .svn propedit <prop> <path>在编辑器中打开属性值并修改。
svn propedit svn:ignore .svn lock <target>锁定文件以禁止其他客户端提交修改(需要服务端启用锁)。
-m "理由";--force 强制夺取锁
svn lock images/banner.png -m "editing before release"svn unlock <target>释放对文件或目录的锁。
--force 强制解除他人的锁
svn unlock images/banner.png仓库与清理
svn cleanup清理工作副本:移除锁令牌、修正时间戳、完成挂起操作。
--diff3-cmd / --remove-unversioned 清理未跟踪文件
svn cleanup /path/to/wcsvn export <url> [<dir>]导出一份干净的目录树(不含 .svn 元数据)——打包发布常用。
-r <rev> 指定版本;--force 覆盖已有文件
svn export ^/tags/v1.2.0 ./release-1.2svn import <path> <url> -m "<msg>"把未纳入版本控制的目录一次性导入仓库作为一个初始提交。
--no-ignore 包含被忽略的文件;--auto-props 应用 auto-props
svn import ./src ^/trunk -m "initial import"svn relocate <from-prefix> <to-prefix>重写工作副本中保存的仓库 URL 前缀(服务端迁移后使用)。
--strict 不匹配前缀则报错
svn relocate https://old.svn.example.com https://new.svn.example.com补丁
svn diff > patch.diff生成一份 unified diff,便于分享或使用 svn patch 应用。
svn diff > /tmp/feature-x.patchsvn patch <patch-file>将 svn diff 生成的 unified diff 应用到工作副本。
--dry-run 预览;--reverse-cmd
svn patch --dry-run /tmp/feature-x.patch速查页版本 1.0.0
适用于 SVN 1.10+