Звучит так, как будто вы хотите отменить ревизии от # 5 до #head:
p4 undo foo.c#5,#head
p4 submit
Или, если вы предпочитаете, вы хотите отменить все ревизии больше # 4:
p4 undo "foo.c#>4"
p4 submit
Или, если вы специально хотели просто отменить № 5 - № 8, даже если существуют более поздние версии:
p4 undo foo.c#5,#8
p4 submit
Этот последний вариант потребует шага разрешения конфликта sync
/ resolve
, если есть более поздние версии(так что вы можете объединиться в более поздних ревизиях, игнорируя от 5 до 8).
Если вы используете версию сервера, которой более нескольких лет, вы можете попробовать p4 copy
:
p4 copy foo.c#4 foo.c
p4 submit
Если вы используете версию сервера, которая даже старше этого, вот самый элегантный способ сделать это через обычный старый p4 sync
:
p4 sync foo.c#4
p4 edit foo.c
p4 sync foo.c#head
p4 resolve -ay
p4 submit
Обратите внимание, что похоже на *Например, 1022 *, у вас есть опция при выполнении sync foo.c#head
до sync
и resolve -ay
промежуточной версии, а затем sync
и resolve -am
более поздних версий, если вы хотите создать ревизию, которая «отменяет» определенные изменениясохраняя более поздние.
Вот способ сделать этос p4 print
(меньше команд для простого случая, но IMO менее элегантно, потому что он не масштабируется до более сложных вариантов использования):
p4 edit foo.c
p4 print -o foo.c foo.c#4
p4 submit