calvinf Asked: 2012-09-05 09:52:41 +0800 CST2012-09-05 09:52:41 +0800 CST 2012-09-05 09:52:41 +0800 CST 我如何取消提交以前提交的 Perforce 更改列表? 772 我刚刚提交了一个 Perforce (p4) 更改列表,我需要对其进行小的修改以更正构建。如何取消提交最近提交的 p4 更改列表? perforce 4 个回答 Voted Jimmy S 2017-10-30T12:20:31+08:002017-10-30T12:20:31+08:00 自 2016.2 以来p4 undo,提供了一个新命令,可以轻松撤消一个或多个更改列表。 例如, p4 undo @12345 此命令将在您的工作区中打开 Changelist 12345 中修改的文件。这些文件将具有其先前修订版的内容。提交打开的文件后,更改列表 12345 的影响将被撤消。 p4 undo还支持修订范围以一次撤消多个更改列表。 p4 sync请注意,如果在提供的更改列表之后修改了文件,您将需要p4 resolve像往常一样修改文件。 有关更多信息,请参见此处:https ://www.perforce.com/perforce/doc.current/manuals/cmdref/Content/CmdRef/p4_undo.html Best Answer scuttlemonkey 2012-09-05T12:39:25+08:002012-09-05T12:39:25+08:00 您可以使用 p4 sync 和 edit/resolve/submit 来撤销已提交的更改列表。有关详细说明,请查看:https ://community.perforce.com/s/article/3474 希望有所帮助。 Alan Wendt 2020-04-10T13:06:12+08:002020-04-10T13:06:12+08:00 # source: https://community.perforce.com/s/article/3474 prevcl=`expr $1 - 1` echo previous $prevcl p4 sync @$prevcl # open all of the edited files for name in `p4 describe -s $1 | egrep '#[0-9]+ edit$' | cut -f 1 -d# | colrm 1 4` do echo "reverting edits to $name" p4 edit $name done # add all of the deleted files for name in `p4 describe -s $1 | egrep '#[0-9]+ delete$' | cut -f 1 -d# | colrm 1 4` do echo "restoring deleted file $name" p4 add $name done p4 sync @$1 p4 resolve -ay p4 sync p4 resolve # delete all of the added files for name in `p4 describe -s $1 | egrep '#[0-9]+ add$' | cut -f 1 -d# | colrm 1 4` do echo "removing added file $name" p4 delete $name done Sergii Puliaiev 2020-10-20T17:02:15+08:002020-10-20T17:02:15+08:00 @Alan Wendt - 谢谢,这很有帮助。 只是一个添加 - 有时文件被移动 - 而不是简单地添加/删除导致有点不同的后缀。这是固定代码,它还解决了删除和添加作为 MOVE 操作的一部分的问题: # source: https://community.perforce.com/s/article/3474 prevcl=`expr $1 - 1` echo previous $prevcl p4 sync @$prevcl # open all of the edited files for name in `p4 describe -s $1 | egrep '#[0-9]+ edit$' | cut -f 1 -d# | colrm 1 4` do echo "reverting edits to $name" p4 edit $name done # add all of the deleted files for name in `p4 describe -s $1 | egrep '#[0-9]+ (move/)?delete$' | cut -f 1 -d# | colrm 1 4` do echo "restoring deleted file $name" p4 add $name done p4 sync @$1 p4 resolve -ay p4 sync p4 resolve # delete all of the added files for name in `p4 describe -s $1 | egrep '#[0-9]+ (move/)?add$' | cut -f 1 -d# | colrm 1 4` do echo "removing added file $name" p4 delete $name done
自 2016.2 以来
p4 undo
,提供了一个新命令,可以轻松撤消一个或多个更改列表。例如,
此命令将在您的工作区中打开 Changelist 12345 中修改的文件。这些文件将具有其先前修订版的内容。提交打开的文件后,更改列表 12345 的影响将被撤消。
p4 undo
还支持修订范围以一次撤消多个更改列表。p4 sync
请注意,如果在提供的更改列表之后修改了文件,您将需要p4 resolve
像往常一样修改文件。有关更多信息,请参见此处:https ://www.perforce.com/perforce/doc.current/manuals/cmdref/Content/CmdRef/p4_undo.html
您可以使用 p4 sync 和 edit/resolve/submit 来撤销已提交的更改列表。有关详细说明,请查看:https ://community.perforce.com/s/article/3474
希望有所帮助。
@Alan Wendt - 谢谢,这很有帮助。
只是一个添加 - 有时文件被移动 - 而不是简单地添加/删除导致有点不同的后缀。这是固定代码,它还解决了删除和添加作为 MOVE 操作的一部分的问题: