误删SVN分支后可恢复:若未提交,执行svn revert;若已提交,则通过svn log定位删除前版本(如r1234),再用svn copy http://...@1234 . --parents重建分支并提交。

误删 SVN 分支后,只要仓库未被强制清理或归档,基本都能恢复。关键不是“找回来”,而是“从历史版本重新复制一份到当前分支目录下”——因为 SVN 中分支本质就是带版本号的目录快照。
确认删除是否已提交
先区分两种情况:
- 如果只是在本地执行了
svn delete但还没svn commit,直接运行svn revert branches/your-branch-name即可还原,无需查日志 - 如果已经
svn commit提交成功,说明删除操作已写入仓库,需通过历史版本恢复
查出删除前的最后一个可用版本
进入该分支所在父目录(通常是 branches),运行:
svn log -l 20 --stop-on-copy
找到删除操作(日志中会显示 D branches/your-branch-name)的上一个版本号,比如 r1234 就是分支还完整存在的最后修订版。
也可用更精准方式定位:
svn log -v branches/ | grep -A 5 "your-branch-name"
《SVN视频教程》,SVN:全称Subversion,是代码版本管理软件,管理着随时间改变的数据。这些数据放置在一个中央资料档案库 (repository) 中。这个档案库很像一个普通的文件服务器,不过它会记住每一次文件的变动。这样你就可以把档案恢复到旧的版本, 或是浏览文件的变动历史。许多人会把版本控制系統想像成某种“时光机器”。
用 svn copy 从历史版本重建分支
在本地工作副本的 branches 目录下执行:
svn copy http://your-svn-server/repo/branches/your-branch-name@1234 . --parents -m "restore branch your-branch-name from r1234"
说明:
-
@1234表示取该版本时的分支状态 -
.表示复制到当前目录(即 branches 下) -
--parents自动创建缺失的中间路径(如需要) - URL 中的路径必须和原分支路径完全一致,包括大小写
验证并提交
执行后,本地会出现新目录 your-branch-name,状态为 A(已计划添加)。
运行 svn status 确认无误,再提交:
svn commit -m "recovered deleted branch: your-branch-name"
提交成功后,分支就重新出现在仓库中,其他用户更新即可正常使用。

















