Perforce P4V中的“回滚…”和“回退已提交的变更列表#####”之间有什么区别


198

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

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

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


3
在这种情况下,“退回已提交的更改列表”是适合我的情况的选项(仅希望从签入中还原更改)。感谢您的出色回答。
戴夫·安徒生

Answers:


222

与使用p4 obliterate命令相比,这两种操作都可以将一组文件还原到以前的状态,并且实质上是比使用命令更快,更安全的方法来消除错误(并且不需要管理员访问权限即可使用它们)。

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

在“回退已提交的更改列表#####”的情况下,还原操作仅限于在更改列表#####中提交的文件。如果此后未对这些文件进行任何更改,这些文件将还原到提交该更改列表之前的状态。如果对这些文件中的任何一个进行了后续更改,Perforce将告诉您这些文件现在已过期。您将必须同步至主要修订版,然后解决差异。这样,您就不会无意间破坏了您真正想要保留的任何更改。

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


18
认为 “回退已提交的更改列表#####”将尝试保留在给定更改列表之后对相同文件所做的更改。
伊恩·林格罗斯

1
@Ian:好的观察。当我写这篇文章时,我正在思考立即纠正错误的思路。通常情况下,如果您意识到以后要撤消某些操作,它将变得更加复杂。我完善了答案。
乌鸦

@IanRingrose我刚刚执行了“退出”操作,看来它没有尝试保留随后进行的更改。我必须先进行同步,然后再解决,以使更改返回到撤消之后提交的更改。
gdw2 2012年

@ gdw2,我认为如果您执行了“回滚”,那么您将无法选择“解决以将更改提交给……”
Ian Ringrose,2012年

1
尽管文件已还原到其原来的状态,但元数据却没有。尝试回滚来自另一个分支的集成将不允许您再次执行该集成,因为元数据说它已经集成了。
威尔·布罗德

17

撤消变更列表提交

您不能撤消成功提交的更改列表,但是可以通过两种方式撤消先前提交的更改:

回滚可将文件或文件集还原回指定的更改列表,日期或修订版。在该时间点之后所做的任何更改都不会保留。 撤消可删除在给定的更改列表,日期或修订版上进行的特定更改,但允许用户保留在后续修订版中所做的更改。

有关详细信息,请参阅https://www.perforce.com/perforce/r13.1/manuals/p4v/Working_with_changelists.html


8

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

正如其他人指出的那样,回滚具有更大的功能-它可以将更改恢复到特定的日期,更改列表或修订版本#


4

回滚...将提示您选择一个要回滚的文件夹,即它将在特定文件夹上工作,并且您可以回滚到标签,更改列表或日期。撤消对特定更改列表中的文件的工作。


4

我通过将Perforce变更列表与堆栈(来自数据结构)进行比较来向用户说明。

撤消可从堆栈中的任何位置删除一项。

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


0

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

  • 退出备份单个更改列表(是否与最近与否)出来。即,它撤消单个更改列表。
  • 回滚可以回滚更改,以便到达先前的更改列表。即撤消多个变更列表。

我曾经忘记了哪个是哪个,最终不得不多次查找。要解决此问题,想象一下回滚几圈,然后希望回滚是复数的事实将帮助您(和我!)记住哪一个是哪一个。回退的声音“少多”比回退给我。想象一下退出单个停车位。

因此,助记符是:

  • 回滚 →多次旋转
  • 退出 →背了出来车位

我希望这有帮助!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.