Perforce P4V中“Rollback …”和“Back Out Submitted Changelist #####”之间的区别是什么?

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

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

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

这两个操作都会将一组文件恢复到以前的状态,并且比使用p4 obliterate命令更快,更安全地撤销错误(并且不需要admin访问权限)。

在“回滚…”的情况下,这可以是任何数量的文件,甚至整个仓库。 您可以告诉它回滚到特定的修订版,更改列表或标签。 这些文件将恢复到创build该修订版本,更改列表或标签时所处的状态。

在“退出提交更改列表#####”的情况下,还原操作仅限于在更改列表#####中提交的文件。 这些文件将恢复到您提交更改列表之前的状态,前提是这些文件没有更改。 如果对这些文件进行了后续更改,Perforce会告诉您这些文件现在已经过期。 你将不得不同步到头版本,然后解决差异。 这样你就不会无意中打断你实际想保留的任何变化。

两个操作都是基本上将旧版本作为新版本提交。 当您执行“回滚…” ,无论之后发生了什么事情,您都会将文件恢复到特定时间点的状态 。 当您执行“退出…”时,您正试图撤消您在特定时间点所做的更改 ,同时保留此后发生的更改。

反转更改列表提交

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

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

有关详情,请参阅http://www.perforce.com/perforce/doc.current/manuals/p4v/Working_with_changelists.html

退出还原或撤消我们的更改。 这样做的方式是,P4解除了本地工作空间中更改列表(默认或新build)的更改。 然后我们必须提交/提交这个备份更改列表,就像我们做其他更改列表一样。 第二部分在这里非常重要,因为它不会自动退出服务器上的更改列表,所以我们必须提交退出的更改列表(这样做后才有意义,但是我最初假设它是自动执行的)。

正如其他人所指出的,回滚具有更大的权力 – 它可以恢复对特定date,更改列表或更改的更改#

回滚…将提示您select要回滚的文件夹,即它将在特定的文件夹上工作,并且可以回滚到标签或changlists或date。 退出在特定的更改列表中的文件。

我通过比较Perforce更改列表和数据结构来向用户解释这一点。

退出从堆栈中的任何位置移除一个项目。

回滚从栈顶移除n个项目。

最简单的,差别是多种之一:

  • 退出退出单个更改列表(不pipe是否最新)。 即它撤销一个更改列表。
  • 为了返回到以前的更改列表, 回滚将尽可能多地回滚更改。 即它解除了多个变更表。

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

所以,助记符是:

  • 回滚 →多次旋转
  • 退出→退出一个停车位

我希望这有帮助!