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

How to revert SVN commit on wrong branch without losing history

我搞砸了,需要弄清楚如何在不破坏所有内容的情况下恢复多个提交。

我正在尝试将 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 中重新应用它们。我可以使用的命令序列是什么?

我最终使用 TortoiseSVN 来完成这个。说明主要在这里: https://tortoisesvn.net/docs/nightly/TortoiseSVN_en/tsvn-howto-rollback.html

  1. 确保您的工作副本是干净的并且 branch1
  2. 打开log对话框
  3. Select 您不喜欢的修订(shift-click 范围,ctrl-click of 个别转速)
  4. 右击select"Revert changes from these revisions"。这将还原您的工作副本。
  5. svn ci . 将更改提交到 repo(这是版本 997)
  6. svn sw ^/branch1a 回到预期的分支
  7. svn merge -c 991,994,995 . 将还原的更改带到此处
  8. svn ci . 提交对 repo 的修订。

我只是有点担心,当需要将 branch1a 合并回 branch1 时,修订版 997 会妨碍并阻止良好的合并。如果有人给出了一个很好的解决方案的好答案,我会很高兴 select 这个答案(在我真正开始导入 revs 之前是部分的)。