使用Subversion将更改提交到与当前检出分支不同的分支

121

我一直在处理从开发线上检出的代码,并发现所做的更改可能是破坏性的更改,需要将其移至实验分支后才能提交到主开发树。然而,我没有检出实验分支,也不想失去已经做出的更改。

是否有一种方法可以将工作文件夹中的更改提交到与最初检出的分支不同的分支?

3个回答

136

你应该首先从已知的sourceURL(这将是你在问题中提到的“开发线”)创建一个分支:

svn copy sourceURL branchURL

然后,切换到该分支:

svn switch branchURL

并提交您的更改:

svn commit

57

你可以通过TortoiseSVN这样做:

  • 右键单击包含更改的目录,不要选择仓库的根目录,否则会重复;
  • 选择 TortoiseSVN -> "分支/标记...";
  • 设置 To URL : "svn://host/repository/FooBar/branches/FooBarBranchName";
  • 确保 [*] 选择了工作副本。 这将确保更改被提交;
  • 日志消息: “尝试使用files :)”;
  • 可选:勾选 [*] 切换工作副本到新的分支/标记。 如果您计划继续在新分支上工作,则此选项很有用。 虽然您也可以稍后切换到它。
  • 尝试找到 OK 按钮。 提示:它位于窗口下部居中位置。

享受吧!


“必须不是存储库的根目录,以避免以这种方式复制”是什么意思? - thekozak
我建议不要选择根文件夹,其中包含所有与分支修改无关的子文件夹。稍后将更容易将(较小的)分支合并回主干。 - J Pollack
在我的情况下,仅提交该文件夹会导致问题,因为软件还依赖于上级文件夹。我认为这通常是最常见的情况。对于大多数用例而言,最好只提交整个项目,因此我建议从根目录进行提交。 - ikku100
@ikku100 如果这些超级文件夹没有变化,那会有什么影响呢? - simpleuser
可能是因为后来的人可能会在那里提交更改,但我想你可以检查正确的超文件夹版本,然后检出子文件夹的分支。我认为这比从超级目录提交更多工作。 - ikku100
请注意,此方法将创建文件夹结构。在执行操作之前无需创建分支文件夹。 - Frostrar

8
您可以直接从您的工作目录创建一个新分支,并将工作目录切换到该分支。
命令是 svn copysvn switch

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