svn diff 用于比较本地工作副本与版本库差异,支持与head、prev、指定版本号或日期快照比对,并可通过--summarize等参数优化输出;tortoisesvn提供图形化对比功能。

直接用 svn diff 就能看到本地工作副本和版本库之间的差异,核心在于明确比对对象:是跟“最新提交(HEAD)”比,还是跟“某次历史提交”比,或是跟“某个日期快照”比。命令不复杂,但参数稍有混淆就得不到想要的结果。
对比本地修改与最新提交(最常用)
这是日常开发中最频繁的操作,用于确认自己改了哪些内容、是否遗漏提交:
-
默认方式:在工作目录下运行
svn diff,自动比较工作副本与 BASE 版本(即你上次svn update或svn commit时对应的服务器版本) -
显式指定 HEAD:运行
svn diff -r HEAD,效果同上,语义更清晰 -
只看文件列表:加
--summarize参数,如svn diff --summarize,输出类似M file1.txt(修改)、A newfile.py(新增)、D old.log(删除) -
忽略已删未提交文件:加
--no-diff-deleted,避免输出大量空删除块,让结果更聚焦实际变更
对比本地与上一个提交版本
当你刚做完一次 commit,想立刻检查本次提交是否完整,或确认当前工作副本是否干净,可用快捷符号:
《SVN视频教程》,SVN:全称Subversion,是代码版本管理软件,管理着随时间改变的数据。这些数据放置在一个中央资料档案库 (repository) 中。这个档案库很像一个普通的文件服务器,不过它会记住每一次文件的变动。这样你就可以把档案恢复到旧的版本, 或是浏览文件的变动历史。许多人会把版本控制系統想像成某种“时光机器”。
-
svn diff -r PREV:HEAD或等价的svn diff -r HEAD^:HEAD,直接对比上一版(PREV)和最新提交(HEAD)——也就是你刚刚提交的内容 - 若工作副本已有新改动,该命令仍有效,显示的是“上次提交”到“当前未提交状态”的全部差异
- 不确定 PREV 是否准确?先运行
svn log -l 3看最近三次提交的 revision 号和时间,心里有底再比
对比本地与指定历史版本或日期
适合回归测试、排查某次发布引入的问题,或核对“昨天改了什么”:
-
按版本号比:如
svn diff -r 12345,表示本地 vs 版本 r12345;也可写成svn diff -r 12345:WORKING(WORKING 是 SVN 内部标识,无需引号) -
按日期比(推荐):SVN 支持 ISO 8601 格式,例如
svn diff -r "{2026-06-15}":WORKING对比本地与昨日零点仓库状态;Bash 用户可自动化:svn diff -r "$(date -d 'yesterday' '+%Y-%m-%d')":WORKING - 注意时区:日期比对依赖服务器时区,若团队跨时区协作,建议统一用修订号更稳妥
图形化操作(Windows/TortoiseSVN)
对命令行不熟悉或需逐行查看差异时,TortoiseSVN 提供直观流程:
- 右键项目文件夹 → TortoiseSVN → Show Log
- 在日志窗口中,按住 Ctrl 键选中两个版本(旧版本在上、新版本在下),右键 → Compare Revisions
- 差异窗口中双击任意文件,用内置编辑器或配置的外部工具(如 Beyond Compare)查看高亮行级差异
- 勾选多个变更文件 → 右键 → Export selection to…,可一键导出所有差异文件(保留原始路径结构)










