删除 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/features
svn 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 分支的主要内容,如果未能解决你的问题,请参考以下文章