svn delete
删除 SVN 中文件或目录的核心命令是 svn delete (或其简写 svn del / svn rm)。

基本语法
svn delete [PATH_TO_BRANCH]
关键点:
- PATH_TO_BRANCH: 这是您要删除的分支在 SVN 仓库中的完整 URL 路径。
- 这只是“计划”删除: 这个命令本身并不会立即从服务器上删除文件,它只是在您本地的工作副本中将该路径标记为“已删除”(deleted)。
- 需要提交才能生效: 您必须使用
svn commit命令将这个“删除”操作提交到服务器,服务器上的分支才会被真正删除。
完整的删除分支步骤
假设我们要删除一个名为 feature/my-new-feature 的分支。
第 1 步:确认您要删除的分支路径
确保您知道分支在仓库中的确切 URL,您可以通过浏览器访问 SVN 仓库的网页界面来查找,或者使用 svn info 命令来查看当前工作副本的 URL。
# 进入您的工作副本(例如主干或另一个分支) cd /path/to/your/working-copy # 查看当前 URL,以确认您在正确的位置 svn info
第 2 步:执行删除命令
使用 svn delete 命令,并提供分支的完整 URL。

# 格式: svn delete [分支的完整URL] svn delete svn://your.svn.server.com/project/branches/feature/my-new-feature
执行后,SVN 会提示您确认删除操作,并会显示将要删除的文件列表。
`` 'D:\svn\project\branches\feature\my-new-feature' is scheduled for deletion: delete branch/file1.txt delete branch/file2.txt delete branch/another_folder/file3.txt
您本地的工作副本已经标记了这个删除操作,但服务器上的分支仍然存在。
#### 第 3 步:提交删除操作
这是最关键的一步,使用 `svn commit` 将删除操作推送到服务器。
```bash
# 提交并添加一个有意义的日志信息,说明为什么删除这个分支
svn commit -m "删除已完成的分支 feature/my-new-feature"
提交成功后,SVN 仓库中的 feature/my-new-feature 分支才被永久删除。
重要注意事项和最佳实践
备份!备份!备份!
SVN 的删除操作是永久且不可逆的(不像 Git 可以轻松恢复),在执行 svn commit 之前,请务必确保:

- 该分支的所有代码都已经合并到了主干或其他永久分支中。
- 您不再需要该分支的任何历史记录。
- 如果不确定,可以先在本地备份整个分支。
不要在分支目录内执行删除
一个常见的错误是先 svn checkout 出整个分支,然后进入分支目录再执行 svn delete .,这是错误的,这样会删除您本地的整个工作副本,而不是服务器上的分支。
正确做法:始终从您其他的工作副本(比如主干目录)中,通过完整的 URL 来执行删除命令。
使用有意义的提交日志
在 svn commit 时,提供一个清晰、简洁的日志信息非常重要,这能帮助团队成员了解为什么删除这个分支,是谁删除的,以及何时删除的。
删除已合并到主干的 feature/X 分支废弃不再需要的 feature/Y 分支修复分支名错误,删除了错误的 feature/Z 分支
权限问题
您需要有足够的权限才能删除分支,只有项目管理员或特定角色的成员才有删除分支的权限,如果您遇到权限错误,请联系您的 SVN 管理员。
场景示例
场景:从本地工作副本删除分支
假设您的工作副本是 trunk,您想删除 branches/old-branch。
# 1. 确认您在 trunk 目录下 pwd # 输出: /path/to/project/trunk # 2. 执行删除命令(使用完整URL) svn delete svn://your.svn.server.com/project/branches/old-branch # 3. 提交更改 svn commit -m "删除废弃的 old-branch 分支"
场景:如果误删了分支,如何恢复?
SVN 的删除操作一旦提交,文件就从 HEAD 版本中消失了,SVN 会保留历史记录,您可以通过以下方式恢复:
-
找到删除的版本号: 使用
svn log查看包含删除操作的提交记录。svn log -v svn://your.svn.server.com/project/branches/old-branch
在日志输出中,找到标记为
D(Delete) 的那一行,记下它的版本号(12345)。 -
使用
svn copy恢复: 从删除操作之前的版本(12344)将整个分支复制回来。# 从版本 12344 的URL复制到新的URL(可以恢复到原位或新位置) svn copy -r 12344 svn://your.svn.server.com/project/branches/old-branch@12344 svn://your.svn.server.com/project/branches/old-branch-restored -m "误操作:恢复已删除的 old-branch 分支"
这会将分支恢复到一个新的位置
old-branch-restored,以避免冲突,然后您可以根据需要将其重命名或合并。
| 命令 | 作用 | 示例 |
|---|---|---|
svn delete [URL] |
标记远程分支为待删除(本地操作) | svn delete svn://.../project/branches/feature-xyz |
svn commit -m "..." |
真正执行删除,将更改推送到服务器 | svn commit -m "删除已完成的 feature-xyz 分支" |
记住核心原则:先 delete (标记),再 commit (执行),并且始终使用完整的 URL 来指定要删除的分支。
