如何回滚到Perforce指定变更集并打开对应文件编辑
解决Perforce回滚到历史变更集并打开对应文件的方法
场景1:工作区处于CL2,CL2文件打开编辑且显示未修改
- 执行回滚命令,将工作区同步到CL2:
p4 sync ...@2 - 提取CL2的变更文件列表并打开编辑:
- Unix/Linux/macOS环境:
p4 describe -s 2 | grep "^..." | awk '{print $1}' | p4 edit - Windows命令行环境:
p4 describe -s 2 | findstr /r "^..." > cl2_files.txt for /f "tokens=1" %f in (cl2_files.txt) do p4 edit %f del cl2_files.txt
p4 describe -s 2输出CL2的简要变更信息,其中以...开头的行对应变更文件;通过过滤提取文件名后,用p4 edit打开编辑,此时本地文件与CL2版本完全一致,因此显示未修改。 - Unix/Linux/macOS环境:
场景2:工作区处于CL1,重新应用CL2变更,文件打开编辑且显示已修改
- 先将工作区同步到CL1:
p4 sync ...@1 - 覆盖本地文件为CL2版本并打开编辑:
- Unix/Linux/macOS环境:
p4 describe -s 2 | grep "^..." | awk '{print $1}' | while read file; do p4 print -o "$file" "$file@2" p4 edit "$file" done - Windows命令行环境:
p4 describe -s 2 | findstr /r "^..." > cl2_files.txt for /f "tokens=1" %f in (cl2_files.txt) do ( p4 print -o "%f" "%f@2" p4 edit "%f" ) del cl2_files.txt
p4 print将CL2版本的文件内容覆盖本地CL1版本,再执行p4 edit打开编辑,此时本地文件与仓库CL1版本存在差异,因此显示已修改。 - Unix/Linux/macOS环境:
关于之前尝试的问题说明
你使用p4 merge -F "@2,@2"时出现提示“所有修订版本已完成集成”,是因为merge命令用于分支间的集成操作,不适合同一分支内回滚后重新应用已提交变更的场景,改用上述方法即可解决。
内容的提问来源于stack exchange,提问作者Adam
相关产品推荐
相关产品推荐

