删除SVN分支

时间:2010-09-28 20:08:55

标签: svn version-control branching-and-merging

我创建了一个名为'features'的SVN项目的分支,现在每当我尝试更新所述项目时,它都会带来一个features文件夹,其中包含该分支的另一个项目副本。有没有办法从存储库中完全删除分支,以便不再发生这种情况?

7 个答案:

答案 0 :(得分:99)

当然:svn rm不需要的文件夹,然后提交。

为避免将来出现这种情况,我会按照recommended layout进行SVN项目:

  • 将您的代码放入 /someproject/trunk文件夹(或只是 /trunk如果你只想放一个 存储库中的项目)
  • 创建分支为/someproject/branches/somebranch
  • 将标记置于/someproject/tags

现在,当您签出工作副本时,请务必仅查看trunk或某个单独的分支。 不要在一个包含所有分支的大型工作副本中检查所有内容。 1

1 除非你知道自己在做什么,否则你知道如何创建浅工作副本。

答案 1 :(得分:54)

假设此分支不是外部分支或符号链接,则删除分支应该如下所示:

svn rm branches/< mybranch >

svn ci -m "message"

如果您想在存储库中执行此操作,请更新以将其从工作副本中删除,您可以执行以下操作:

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

然后运行:

svn update

答案 2 :(得分:46)

对于使用TortoiseSVN的用户,您可以使用存储库浏览器(它在上下文菜单中标记为&#34; Repo-browser&#34;)来完成此操作。

context menu

找到要删除的分支文件夹,右键单击它,然后选择&#34;删除。&#34;

deleting the folder

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

committing

答案 3 :(得分:8)

您也可以直接删除遥控器上的分支。完成后,下一次更新将从您的工作副本中删除它。

svn rm "^/reponame/branches/name_of_branch" -m "cleaning up old branch name_of_branch"

^是遥控器网址的缩写,如'svn info'中所示。 Windows命令行中需要双引号,因为^是一个特殊字符。

如果您从未签出分支,此命令也可以使用。

答案 4 :(得分:3)

您可以在结帐时删除功能文件夹,然后提交更改。

为了防止将来出现这种情况,我建议您遵循SVN布局的命名约定。

在创建每个项目时,为每个项目提供一个trunk,branches,tags文件夹。

svn
+ project1
  + trunk
    + src
    + etc...
  + branches
    + features
      + src
      + etc...
  + tags
+ project2
  + trunk
  + branches
  + tags

答案 5 :(得分:3)

从工作副本:

svn rm branches/features
svn commit -m "delete stale feature branch"

答案 6 :(得分:2)

删除分支的命令如下:

svn delete -m“&lt; your message&gt;” &lt; branch url&gt;

如果您不想获取/签出整个仓库,请在终端上执行以下命令:

1)获取包含工作副本的目录的绝对路径
&GT; PWD
2)启动svn代码签出
&GT; svn checkout&lt; branch url&gt; &lt;点1的绝对路径&gt;

以上步骤将为您提供分支文件夹内的文件,而不是整个文件夹。