14

如果一个工作副本(本地副本)是从一个分支创建的,我们称它为 A。编码是在分支 A 中完成的,但分支 A 对提交“关闭”,而分支 b 已打开。如何将我的工作副本更改合并到分支 B 并提交到分支 B,而无需先将更改提交到分支 A。

主干 -> 分支 A。

   I checked out branch A and made changes.
   Branch A was closed to commits.

从分支 A 创建的新分支。分支 A -> 分支 B。

   I would like to commit my working copy changes (currently pointing at Branch A into branch B without commiting to Branch A)
4

2 回答 2

16
  1. 备份您的工作副本。
  2. svn switch到分支B
  3. 审查更改(基本修订可能不同,svn 只进行盲目、愚蠢的文本合并),解决冲突,如果有的话
  4. 犯罪

对带有未提交更改的工作副本执行此类操作是危险的。如果出现任何问题或有太多冲突更改,请回滚到您的备份版本,从工作副本的基本修订版创建一个临时分支A,切换到该分支,然后提交您的更改,这样它们就安全了。然后将该分支合并为B您想要的任何方式,然后将其删除。

记住 svn 的口头禅:尽早提交,经常提交。如果我有超过一个工作日的未提交更改,我会感到紧张。通常,我会为任何持续时间超过几个小时的开发创建一个功能分支。并定期承诺。完成后,我将它合并到它来自的任何地方,然后将其删除。

于 2010-05-25T14:28:16.090 回答
2

要非常小心,我会将我的更改提交到一个私有分支(我们称之为它C),然后将该分支合并C到新的 open-for-commits 分支B

  1. cd到您要提交的更改的工作目录
  2. svn copy . C
  3. cd ..带结帐到您的工作区文件夹
  4. svn co B
  5. cd进入B目录
  6. svn merge步骤 2 的修订。
  7. 查看更改。
  8. 犯罪!
于 2013-04-03T17:46:03.577 回答