In Eclipse Ganymede (Subclipse)
Выберите проект / файл, содержащий плохие изменения, и во всплывающем меню выберите:
Команда -> Показать историю
Изменения, связанные с этим проектом / файлом, будут отображаться на вкладке «История».
Найдите ревизию, в которой были зафиксированы "плохие изменения", и во всплывающем меню выберите:
Возврат изменений из редакции X
Это объединит изменения в файле (ах), измененных в рамках неверной ревизии, с ревизией, предшествующей плохой ревизии.
Здесь есть два сценария:
Если вы не зафиксировали никаких изменений для этого файла (плохая ревизия является последней ревизией для этого файла), он просто удалит изменения, внесенные в неверную ревизию. Эти изменения объединяются с вашей рабочей копией, поэтому вы должны их зафиксировать.
Если вы зафиксировали некоторые изменения для этого файла (неверная ревизия не является последней ревизией для этого файла), вам придется вручную разрешить конфликт. Допустим, у вас есть файл readme.txt с неверным номером ревизии 33. Кроме того, вы сделали еще один коммит для этого файла в ревизии 34. После того, как вы выберете Отменить изменения из ревизии 33 , вы получите в вашей рабочей копии:
readme.txt.merge-left.r33 - неверная версия
readme.txt.merge-right.r32 - до неверной ревизии
readme.txt.working - версия рабочей копии (такая же, как в r34, если у вас нет незафиксированных изменений)
Исходный файл readme.txt будет помечен как конфликтующий и будет содержать объединенную версию (где удаляются изменения из неверной ревизии) с некоторыми маркерами (<<<<<<< .working и т. Д.). Если вы просто хотите удалить изменения из неверной ревизии и сохранить изменения, сделанные после этого, тогда все, что вам нужно сделать, это удалить маркеры. В противном случае вы можете скопировать содержимое одного из 3 файлов, указанных выше, в исходный файл. Что бы вы ни выбрали, когда вы закончите, пометьте конфликт как разрешенный </p>
Команда - Марк решен
Временные файлы будут удалены, а ваш файл будет помечен как измененный. Как и в 1, вы должны зафиксировать изменения.
Обратите внимание, что это не удаляет ревизии из истории ревизий в хранилище svn. Вы просто сделали новую ревизию, в которой удаляются изменения из неверной ревизии.