如何在错误的分支上恢复SVN提交而不丢失历史记录

时间:2017-06-07 13:38:21

标签: svn merge

我搞砸了,需要弄清楚如何在不破坏一切的情况下还原几个提交。

我正在尝试将branch1branch2合并到一个临时分支中,如下所示:

1)  svn cp ^/branch1 ^/branch1a  // Create a branch
2)  svn sw ^/branch1a            // Switch to that branch
3)  svn merge ^/branch2 .        // Merge branch2 to branch1a
4)  <do lots of manual work>
5)  svn ci .                     // revision 991,994,995, return to step 4 if needed
6)  svn sw ^/branch1             // When happy, switch back to branch1
7)  svn merge ^/branch1a .       // Merge our happy changes back into branch1
8)  svn ci                       // Commit these changes

我仍在围绕步骤4-5进行迭代,但意识到我忘了执行第2步。我需要从branch1恢复我的修订,并将它们应用到branch1a所以我可以继续工作。

我尝试使用svn merge -c991,994,995 .进行还原,但我的工作副本似乎没有改变。此外,我需要确保我可以保留这些更改并在branch1a中重新应用它们。我可以使用什么命令序列?

1 个答案:

答案 0 :(得分:1)

我最终使用TortoiseSVN来实现这一目标。说明主要在这里: https://tortoisesvn.net/docs/nightly/TortoiseSVN_en/tsvn-howto-rollback.html

  1. 确保您的工作副本干净且位于branch1
  2. 打开log对话
  3. 选择您不喜欢的修订版(按住Shift键单击范围,按住Ctrl键单击 个人转速)
  4. 右键单击并选择&#34;还原这些修订的更改&#34;。这将恢复您的工作副本。
  5. svn ci .将更改提交到repo(这是rev 997)
  6. svn sw ^/branch1a返回目标分支
  7. svn merge -c 991,994,995 .将恢复的更改带到此处
  8. svn ci .提交回购的修订版。
  9. 我有点担心,当需要将branch1a合并回branch1时,修订版997会阻碍并阻止良好的合并。如果有人给出了一个很好的解决方案的答案,我会很高兴选择这个答案(这是部分的,直到我实际上导入转速)。