直接用 svn diff -r head^:head 可查看工作副本与上一提交的全部差异,等价于 svn diff -r prev:head;若工作副本干净,head^ 即最近一次已提交版本,否则对比的是最新提交与当前未提交状态。

直接用 svn diff -r HEAD^:HEAD 就能看到工作副本和上一个提交版本之间的全部差异。这个命令简洁明确,不需要手动查版本号,适合日常快速检查本地改了什么。
最常用的一条命令
在工作目录下执行:
-
svn diff -r HEAD^:HEAD—— 比较上一版(HEAD^)和当前最新提交(HEAD)之间的差异,即你本地未提交的修改 - 如果只想看改了哪些文件,不关心具体行内容,加
--summarize:svn diff -r HEAD^:HEAD --summarize - 想把差异保存成 patch 文件便于分享或后续应用:
svn diff -r HEAD^:HEAD > local_changes.patch
注意 HEAD^ 的含义
这里的 HEAD^ 表示“HEAD 的前一个修订版本”,也就是最近一次已提交的版本。它等价于 PREV,所以你也可以写成:svn diff -r PREV:HEAD —— 效果完全一样,语义更清晰。
⚠️ 注意:这个写法只在工作副本干净(没有未提交变更)时才严格对应“上一提交”;如果有未提交修改,HEAD 仍指最新提交,HEAD^ 仍是它的前一个,所以对比结果始终是“最新提交 vs 当前工作副本状态”。
如果当前工作副本有未提交变更,想看它和最新提交的区别
其实这就是默认行为 —— svn diff 不带 -r 参数时,默认就是比较工作副本和 BASE(即上次更新/提交时的版本):
-
svn diff—— 最简方式,直接显示所有未提交改动 -
svn diff path/to/file—— 只看某个文件的本地修改 -
svn diff --no-diff-deleted—— 忽略已被标记删除但尚未提交的文件,让输出更聚焦
验证当前所处版本是否正确
不确定 HEAD^ 是否是你想比的版本?先查日志确认:
-
svn log -l 3—— 显示最近3次提交,看清楚 revision 号和提交信息 -
svn info—— 查看当前工作副本基于哪个 revision 更新(即 BASE 版本)
比如 Revision: 1234 表示你上次更新到 r1234,那么 svn diff -r 1233:1234 和 svn diff -r PREV:HEAD 效果一致。











