6

我正在使用 SVN (TortoiseSVN) 并且经常遇到以下情况:

我想放弃自特定(旧)修订版以来的任何更改,并将所有文件转回此特定(旧)版本。然后我想进一步工作,就好像这个特定的(旧)修订版是最新的一样,即我希望能够将特定的旧修订版作为新修订版提交。

我为这个问题找到了几个解决方案(例如 stackoverflow.com/questions/402159/roll-back-or-revert-entire-svn-repository-to-an-older-revision 或 rustyrazorblade.com/2007/04/how- to-roll-back-commits-to-an-earlier-version-of-a-repository-in-svn/)。

但是,我想知道是否有一种简单的方法可以回滚到特定的修订版。我认为版本控制对这些事情有好处(或者我误解了什么?)。

是否有一个简单的命令/按钮/等。将我的本地存储库更新为旧版本并声明它是最新版本?

由于我认为没有“内置”功能可以做到这一点,我想知道是什么原因导致开发人员决定不集成此功能。有人知道吗?

4

4 回答 4

3

无论出于何种原因,SVN 人员决定将其称为“反向合并”。在 TortoiseSVN Merge 对话框中,选中 Reverse Merge 框,并确保修订框的内容类似于HEAD-324(其中 324 是您要返回的版本)。

于 2010-03-19T14:04:01.607 回答
3

在 TortoiseSVN 中有一种更简单(或者至少更直观的恕我直言)的方法来做到这一点。我认为它实际上在幕后所做的是其他人提到的“反向合并”。

  1. 右键单击要回滚的文件/文件夹。
  2. 从 TortoiseSVN 菜单中单击“显示日志”。
  3. 选择要撤消的修订。
  4. 右键单击这些修订。
  5. 选择“ Revert changes from this revision ”——不要与“Revert to this revision”混淆!
  6. 点击“是”
  7. 请记住,这只会更改您的工作副本。确认这符合您的预期,然后提交,在您的日志消息中添加有关“回滚”或“反向合并”的内容
于 2010-03-24T21:22:20.100 回答
2

我不确定我是否理解正确,因为例如您引用的链接(回滚或将整个 svn 存储库恢复到旧版本)已经有了解决方案:反向合并(如 Powerlord 所述)。

来自 TSVN 合并文档:

如果要将更改从工作副本中合并回来,以恢复已提交的更改,请选择要恢复的修订并确保选中了“反向合并”框。

我认为要记住的重要一点是您不要“回滚更改”而是“合并它们”然后重新提交。可以这么说,您“继续前进”(因为 SVN 中没有“反转”;毕竟它是版本控制,不应该“忘记事情”:))。

如果您不小心提交了由于某种原因绝对不能在存储库中的内容,您必须(并且可以)花费更大的时间来“再次将其取出”(也在您链接的线程中描述:备份和恢复)。

于 2010-03-19T14:33:45.237 回答
-2

为了安全起见,我会将当前主干移动到一个分支中,然后在您想要的修订号处复制一份作为主干。

于 2010-03-19T14:04:10.497 回答