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


115

我一直在研究从开发线签出的代码,发现所做的更改可能会破坏更改,需要在提交至主要开发树之前将其移至实验分支。但是,我没有检出试验分支,也不想丢失已经进行的更改。

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

Answers:


129

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

svn copy sourceURL branchURL

然后,切换到该分支:

svn switch branchURL

并提交您的更改:

svn commit

55

您可以在TortoiseSVN中这样做:

  • 右键单击要分支的更改所在的目录。它不能是存储库的根,更不能以这种方式复制。
  • 选择TortoiseSVN- >“ Branch / tag ... ”;
  • 设为网址:“ svn:// host / repository / FooBar / branches / FooBarBranchName”;
  • 确保选择了[*] 工作副本。这将确保所做的更改已提交;
  • 日志消息:“用蝇进行实验:)”;
  • 可选:勾选[*]将工作副本切换到新的分支/标签。如果您打算继续在新分支上工作,这将很有用。虽然您以后也可以切换到它。
  • 尝试找到确定按钮。提示:它在窗口的下部居中。

请享用!


您的意思是“它不能成为存储库的根,更不能以这种方式进行复制”?
thekozak 2015年

我建议不要选择包含所有不相关的子文件夹的根文件夹,这些子文件夹在分支中均不可修改。稍后,将(较小)分支合并回主干将变得更加容易。
J Pollack 2015年

就我而言,仅提交该文件夹会导致问题,因为该软件也依赖于超级文件夹。我认为通常是这样。我认为对于大多数用例,最好只提交整个内容,因此建议从我说的根目录进行提交。
ikku100 2015年

@ ikku100如果这些超级文件夹没有变化,那有什么关系?
simpleuser 2016年

可能是因为以后人们可能会在此提交更改,但是我想您可以签出超级文件夹的正确版本,然后签出子文件夹的分支。我认为,这不仅仅是从超目录提交的工作。
ikku100

8

您可以直接从工作目录创建一个新分支,然后将工作目录切换到该分支。

命令是 svn copysvn switch

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.