删除 SVN 分支

Posted

技术标签:

【中文标题】删除 SVN 分支【英文标题】:Deleting an SVN branch 【发布时间】:2011-04-18 12:20:00 【问题描述】:

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

有没有办法从存储库中完全删除分支,这样就不会再发生这种情况了?

【问题讨论】:

【参考方案1】:

删除分支的命令如下:

svn delete -m ""

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

1) 获取包含您的工作副本的目录的绝对路径 > 密码 2) 启动 svn 代码签出 > svn checkout

上述步骤将为您获取分支文件夹中的文件,而不是整个文件夹。

【讨论】:

【参考方案2】:

您也可以直接删除远程上的分支。完成后,下一次更新会将其从您的工作副本中删除。

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'不是工作副本”所以大概我从来没有设法检查我所做的分支【参考方案3】:

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

svn rm branches/< mybranch >

svn ci -m "message"

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

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

然后运行:

svn update

【讨论】:

来自the book:“但是,删除一个 URL 是立即的,所以你必须提供一个日志消息 [with -m]”所以svn rm -m message http://... 并且不需要update【参考方案4】:

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

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

输入你的提交信息,你就完成了。

【讨论】:

执行 SVN 更新以从磁盘中删除文件夹(如果在删除分支之前未删除)【参考方案5】:

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

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

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

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

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

【讨论】:

【参考方案6】:

来自工作副本:

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

【讨论】:

【参考方案7】:

您可以像结帐中的任何其他文件夹一样删除 features 文件夹,然后提交更改。

为了防止以后发生这种情况,我建议您遵循 SVN 布局的命名约定。

在创建时给每个项目一个trunk、branches、tags文件夹。

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

【讨论】:

以上是关于删除 SVN 分支的主要内容,如果未能解决你的问题,请参考以下文章

从SVN历史列出作者,包括已删除(未合并)的分支

svn如何在服务器端删除,本地没删,怎么解决?

SVN版本控制管理操作

SVN版本控制管理操作

gitlab删除远端or本地某个文件

SVN 发布变更汇总(按文件添加、删除和修改的行数)