删除一个SVN分支

96

我创建了一个名为“features”的SVN项目的分支,现在每次我试图更新该项目时,它都会带来一个名为“features”的文件夹,其中包含来自该分支的另一份项目的副本。

有没有办法彻底从仓库中删除该分支,以便不再出现这种情况?

7个回答

113

可以的:使用svn rm命令删除不需要的文件夹并提交更改。

为了避免将来出现这种情况,建议按照SVN项目的推荐布局进行操作:

  • 将您的代码放在/someproject/trunk文件夹中(如果只想将一个项目放入存储库,则只需使用/trunk
  • 创建分支:/someproject/branches/somebranch
  • 将标签放在/someproject/tags

现在,当您检查工作副本时,请确保仅检查trunk或某个单独的分支。 不要将所有分支都检出到一个包含所有分支的巨大工作副本中。1

1除非您知道自己在做什么,并且知道如何创建浅层工作副本。


67

对于使用TortoiseSVN的用户,您可以通过使用仓库浏览器(在上下文菜单中标记为“Repo-browser”)来完成此操作。

上下文菜单

找到您想要删除的分支文件夹,右键单击它,然后选择“删除”。

删除文件夹

输入您的提交消息,完成操作。

提交


执行 SVN 更新以从磁盘中删除文件夹(如果在删除分支之前未删除)。 - ArieKanarie

60

假设该分支不是外部分支或符号链接,则删除分支应该很简单:

svn rm branches/< mybranch >

svn ci -m "message"

如果您想在仓库中执行此操作并更新以将其从工作副本中移除,可以执行以下操作:

svn rm http://< myurl >/< myrepo >/branches/< mybranch >

然后运行:

svn update

31
该书 中得知:"然而,删除一个URL是即时的,所以您必须提供一个带有-m参数的日志消息",因此需要使用命令 svn rm -m message http://... 进行删除,无需进行更新操作。 - rymo

14

您也可以直接在远程上删除分支。这样做后,下一次更新将从您的工作副本中删除它。

svn rm "^/reponame/branches/name_of_branch" -m "cleaning up old branch name_of_branch"
^是远程URL的缩写,可以在'svn info'中看到。在Windows命令行中,双引号是必需的,因为^是一个特殊字符。
即使您从未检出该分支,此命令也将起作用。

我在 Mac 上使用它,效果很好!当我尝试使用排名第一的答案时,我收到了“'/local/path/to/repo/branches/branch-name' 不是一个工作副本”的响应,因此我可能从未成功检出我创建的分支。 - Mad Bernard

4

删除分支的命令如下:

svn delete -m "<你的消息>" <分支url>

如果您不希望获取/检出整个代码库,请在终端上执行以下命令:

1) 获取包含您的工作副本的目录的绝对路径
> pwd
2) 开始svn代码检出
> svn checkout <分支url> <从第1点获得的绝对路径>

以上步骤将获取分支文件夹内的文件,而不是整个文件夹。


3
你可以像删除其他文件夹一样删除你的checkout中的features文件夹,然后提交更改。
为了避免这种情况再次发生,建议您遵循SVN布局的命名约定。
在创建每个项目时,将其分别放置于主干、分支、标签文件夹中。
svn
+ project1
  + trunk
    + src
    + etc...
  + branches
    + features
      + src
      + etc...
  + tags
+ project2
  + trunk
  + branches
  + tags

3

从工作副本:

svn rm branches/features
svn commit -m "删除过时的特性分支"


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接