svn log、svn diff 和 svn cat 是排查回溯的核心命令组合:log 查提交记录(支持限数、xml、指定版本、详细文件路径);diff 查版本间差异(支持范围、单文件、简洁-c语法);cat 查指定版本文件内容(支持重定向);还可按搜索关键词、日期范围、作者筛选日志。

直接用 svn log 查看提交日志,配合 svn diff 和 svn cat 定位具体修改内容,是日常排查和回溯最常用的操作组合。
查看简洁版提交日志
在项目根目录或任意工作副本路径下运行:
- svn log -l 10:显示最近10次提交(含作者、版本号、日期、日志摘要)
- svn log -l 5 --xml:输出为 XML 格式,适合脚本解析
- svn log -r 1234:只查指定版本号的单条记录
- 加 -v 参数(如 svn log -l 5 -v)可看到每次提交影响的文件路径
对比两个版本间的代码差异
定位某次提交改了什么,核心用 svn diff:
《SVN视频教程》,SVN:全称Subversion,是代码版本管理软件,管理着随时间改变的数据。这些数据放置在一个中央资料档案库 (repository) 中。这个档案库很像一个普通的文件服务器,不过它会记住每一次文件的变动。这样你就可以把档案恢复到旧的版本, 或是浏览文件的变动历史。许多人会把版本控制系統想像成某种“时光机器”。
- svn diff -r 1230:1231:查看从 r1230 到 r1231 的变更(即 r1231 这次提交的改动)
- svn diff -r 1230:1231 文件名:只对比某个特定文件
- svn diff -c 1231:等价于 -r 1230:1231,更直观表示“查看第 1231 次提交的变更”
- 输出结果中,+ 行 是新增,- 行 是删除,不带符号的是上下文
查看某次提交前/后的文件内容
当 diff 不够直观,需要确认原始或修改后的内容时:
- svn cat -r 1230 文件名:查看该文件在 r1230 版本的内容(不依赖本地工作副本)
- svn cat -r 1231 文件名:查看 r1231 版本的内容
- 搭配重定向保存:svn cat -r 1230 main.py > main_v1230.py
- 注意:svn cat 默认输出到终端,大文件建议加 | less 或重定向
按时间、作者或关键词筛选日志
快速定位目标提交:
- svn log --search "修复空指针":搜索日志消息中包含该文本的提交(SVN 1.8+)
- svn log -S "login":同上,-S 是 --search 的简写
- svn log -r {2024-03-01}:{2024-03-15}:查指定日期范围内的提交
- svn log -u username:只显示某位用户提交的记录










