全部速查表

SVN 命令速查

Subversion (SVN) 命令快速参考:checkout、update、commit、分支/标签、合并、历史查看与仓库管理,并附带常用参数和实操示例。

28 条命令

入门

svn checkout <url> [<dir>]

从仓库检出一个工作副本——首次获取项目文件。

-r <rev> 指定版本;--depth empty|files|immediates|infinity

svn checkout https://svn.example.com/repo/trunk ./my-project
svn info

显示工作副本或 URL 的信息:URL、版本号、最近修改等。

svn info .

日常工作

svn update

把工作副本与仓库同步;可能自动合并远端变更。

-r <rev> 更新到指定版本;--accept postpone|base|mine-full|theirs-full|edit|launch

svn update --accept postpone
svn status

查看工作副本状态:修改、新增、删除、未跟踪文件。

-u 显示远端过期信息;-v 详细;--quiet 不显示未跟踪文件

svn status -u
svn add <path>

将文件或目录标记为下一次提交时新增。

-N 非递归(仅作用于目录本身);--force 添加已纳入版本控制的项

svn add src/utils/ helpers/
svn delete <path>

在工作副本中删除文件或目录,并标记为下一次提交时删除。

--keep-local 在工作副本中保留文件(不从远端删除)

svn delete obsolete/old-config.json
svn 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 --summarize
svn 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-x
svn 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 12345
svn merge --reintegrate <url>

将特性分支重新合回源分支(旧式用法,1.8 之前的方案)。

svn merge --reintegrate ^/branches/feature-x
svn 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 -v
svn blame <file>

逐行显示作者与版本号(praise / annotate)。

-r <rev> 标注到指定版本为止;-v 同时显示版本说明

svn blame src/index.ts | tail -20
svn 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/wc
svn export <url> [<dir>]

导出一份干净的目录树(不含 .svn 元数据)——打包发布常用。

-r <rev> 指定版本;--force 覆盖已有文件

svn export ^/tags/v1.2.0 ./release-1.2
svn 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.patch
svn 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+