我想撤销其中一个签到的更改。在特定更改列表的右键单击上下文菜单中,有以下两个选项:
这两者有什么区别?我应该在什么情况下使用其中任何一个?
答案 0 :(得分:220)
这两个操作都将一组文件恢复到以前的状态,并且比使用p4 obliterate
命令更快,更安全地撤消错误的方法(并且您不需要管理员访问权限来使用它们)。
在“Rollback ...”的情况下,这可以是任意数量的文件,甚至是整个软件仓库。您可以告诉它回滚到特定的修订版,更改列表或标签。这些文件将恢复到创建该修订,更改列表或标签时的状态。
在“退出已提交的更改列表#####”的情况下,还原操作仅限于在changelist #####中提交的文件。如果没有对这些文件进行任何更改,那么这些文件将恢复到您提交更改列表之前的状态。如果对这些文件中的任何文件进行了后续更改,Perforce将告诉您这些文件现在已过期。您必须同步到头版本,然后解决差异。这样,您就不会无意中破坏您实际想要保留的任何更改。
这两项操作基本上都是将旧版本作为新版本提交。当您执行“回滚...”时,您将文件恢复到他们在特定时间点所处的状态,无论之后发生了什么。当您执行“退出...”时,您试图撤消在特定时间点所做的更改,同时保留自此以后发生的更改。
答案 1 :(得分:16)
撤消更改列表提交
您无法撤消成功更改列表提交,但您可以通过两种方式撤消以前提交的更改:
回滚将文件或文件集还原到指定的更改列表,日期或修订版。在该时间点之后所做的任何更改都不会保留。 退出删除在给定更改列表,日期或修订版本上所做的特定更改,但允许用户保留在后续修订版中所做的更改。
有关详情,请参阅https://www.perforce.com/perforce/r13.1/manuals/p4v/Working_with_changelists.html
答案 2 :(得分:8)
回退可恢复或撤消我们的更改。它这样做的方式是,P4撤消我们本地工作区上的更改列表(默认或新的)中的更改。然后,我们必须像其他更改列表一样提交/提交此备份更改列表。第二部分在这里很重要,因为它不会自动退出服务器上的更改列表,我们必须提交备份的更改列表(这在您执行之后有意义,但我最初假设它会自动执行此操作)。
正如其他人所指出的,Rollback具有更强大的功能 - 它可以恢复对特定日期,更改列表或修订的更改#
答案 3 :(得分:4)
回滚...将提示您选择要回滚的文件夹,即它将在特定文件夹上运行,并且您可以回滚到标签或列表或日期。退出可以处理特定更改列表中的文件。
答案 4 :(得分:2)
我通过将Perforce变更列表与堆栈(来自数据结构)进行比较来向用户解释这一点。
退出会从堆栈中的任何位置删除一个项目。
回滚从堆栈顶部删除n个项目。
答案 5 :(得分:0)
最简单的,差异是多个中的一个:
我曾经忘记哪一个是哪个,最后不得不多次查找。要解决这个问题,想象回滚几次旋转然后希望 rollback 是复数的事实将帮助你(和我!)记住哪一个是哪个。 退出听起来不那么复数'比回滚给我。想象一下,退出单个停车位。
所以,助记符是:
我希望这有帮助!