如何将svn提交的全部或部分回滚?

13

如何使用TortoiseSVN撤销全部或部分的SVN提交?

4个回答

15

首先,您需要确认您是想回滚 "所有更改" 还是仅回滚一个单独的文件。 TortoiseSVN 只有 "1 或全部" 的方法, 意味着你可以还原整个 check-in 集或单个文件: 不能是部分 check-ins。

整个 Changeset

因此,如果要还原特定的修订版本(且您希望更改该更改集中的所有文件),您将要右键单击-> TortoiseSVN -> 显示日志。找到您要回滚到的修订 / 更改集,右键单击该修订 “还原为此修订版本”。

还有另一个选项可能会对您感兴趣,即“从此修订还原更改”,它将在该修订版本和当前版本之间进行差异合并,仅合并差异。 我有时觉得这更具吸引力,这样我就可以保留 changesets 之间的所有更改。

单个文件

另一个选项是还原单个文件。 您需要再次右键单击-> TortoiseSVN -> 显示日志; 但这一次,您可以选择单个文件。

TortoiseSVN 不允许您选择多个要还原回去的更改集中的文件。 它只能是全部或只有 1 个。

更改集 checkins

对于其他所有人,请确保 "check-ins" 仅涉及与该更改相关的文件。 这应该是当今的常见做法; 但是,我仍然发现开发人员在一天结束时将所有更改捆绑到单个 check-in 中。

我斜眼看那些开发人员。 -_^


5

如果你想撤销之前做出的提交(修订):

使用资源管理器:

  1. 右键单击要还原的文件/文件夹,
  2. TortoiseSVN->显示日志,
  3. 右键单击不需要的修订版本,
  4. "从此修订版本撤消更改",
  5. 提交->确定。

如果你想撤消本地所做的更改(未提交)

使用资源管理器:右键单击文件,TortoiseSVN->还原。


2
请注意,您只能“还原”以检入新版本,其中不再包含您想要还原的更改。这在其他答案中已经描述了。
您实际上无法撤消检入(就像“它从未发生过”),旧状态仍将存在于存储库的历史记录中。
真正撤消/删除内容是一个长期的功能请求:

http://subversion.tigris.org/issues/show_bug.cgi?id=516


2

除了Bartek所说的方法,您还可以将特定版本检出到本地工作副本中,然后将其提交回主干。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接