200

我想从我的一次签到中撤消更改。在特定更改列表的右键单击上下文菜单中,有以下两个选项:

  • 回滚...
  • 退出提交的变更列表

这两者有什么区别?在什么情况下我应该使用其中一种?

4

6 回答 6

224

这两个操作都将一组文件恢复到以前的状态,并且本质上是比使用p4 obliterate命令更快、更安全的撤消错误的方法(并且您不需要管理员访问权限来使用它们)。

在“回滚...”的情况下,这可以是任意数量的文件,甚至是整个软件仓库。您可以告诉它回滚到特定的修订、更改列表或标签。文件将恢复到创建该修订、更改列表或标签时的状态。

在“Back Out Submitted Changelist #####”的情况下,还原操作仅限于在 changelist ##### 中提交的文件。这些文件将恢复到您提交该更改列表之前的状态,前提是此后没有对这些文件进行任何更改。如果对这些文件中的任何一个进行了后续更改,Perforce 会告诉您这些文件现在已经过时了。您必须同步到头部修订,然后解决差异。这样您就不会无意中破坏您实际想要保留的任何更改。

这两种操作基本上都是通过将旧修订作为新修订提交来工作的。当您执行“回滚...”时,您正在将文件恢复到它们在特定时间点所处的状态,而不管它们此后发生了什么。当您执行“退出...”时,您试图撤消您在特定时间点所做的更改,同时保留此后发生的更改。

于 2010-05-05T19:35:00.660 回答
17

反转更改列表提交

您无法撤消成功的更改列表提交,但您可以通过两种方式撤销之前提交的更改:

回滚将一个文件或一组文件恢复到指定的更改列表、日期或修订版。在该时间点之后所做的任何更改都不会保留。 退出会删除在给定更改列表、日期或修订版中所做的特定更改,但允许用户保留在后续修订版中所做的更改。

详情请参考https://www.perforce.com/perforce/r13.1/manuals/p4v/Working_with_changelists.html

于 2012-07-04T08:05:32.380 回答
8

回退恢复或撤消我们的更改。它这样做的方式是,P4 撤消我们本地工作区上更改列表(默认或新)中的更改。然后,我们必须像执行其他更改列表一样提交/提交这个已撤消的更改列表。第二部分在这里很重要,因为它不会自动退出服务器上的更改列表,我们必须提交已退出的更改列表(这在您执行之后才有意义,但我最初假设它会自动执行)。

正如其他人所指出的,回滚具有更大的权力 - 它可以将更改恢复到特定日期、更改列表或修订#

于 2013-06-25T15:21:32.963 回答
4

Rollback... 将提示您选择要回滚的文件夹,即,它将在特定文件夹上工作,您可以回滚到标签或更改列表或日期。退出适用于特定更改列表中的文件。

于 2010-05-05T18:44:24.180 回答
4

我通过将 Perforce 更改列表与堆栈(来自数据结构)进行比较来向用户解释这一点。

退出会从堆栈中的任何位置删除一项。

回滚从堆栈顶部删除 n 个项目。

于 2016-05-20T21:21:59.700 回答
1

最简单的区别是多个之一:

  • Backout退出单个更改列表(无论是否是最新的)。即它撤消单个更改列表。
  • Rollback尽可能多地回滚更改,以获取先前的更改列表。即它撤消多个更改列表。

我曾经忘记哪个是哪个,最后不得不多次查找。为了解决这个问题,想象回滚为几个旋转然后希望回滚是复数的事实将帮助你(和我!)记住哪个是哪个。对我来说,退出听起来比回滚“少复数” 。想象一下退出一个停车位。

所以,助记符是:

  • 回滚→多次旋转
  • 退车→退车车位

我希望这有帮助!

于 2017-01-12T14:31:41.487 回答