Откат плохих изменений с помощью SVN в Eclipse
-
09-06-2019 - |
Вопрос
Допустим, я допустил некоторые неверные изменения в хранилище Subversion. Затем я совершаю хорошие изменения, которые хочу сохранить.
Какой самый простой способ откатить эти плохие изменения в Eclipse и сохранить их? Предполагая, что файлы, относящиеся к исправленным изменениям, не совпадают с файлами, относящимися к исправленным изменениям. Как все изменится, если в те же файлы были внесены хорошие изменения, как и плохие изменения?
В основном я ищу способ сделать это с помощью плагинов Eclipse (Subclipse или Subversive), но команды командной строки также интересны.
Решение
У вас есть два варианта сделать это.
Quick and Dirty выбирает ваши файлы (используя ctrl ) в представлении Project Explorer, щелкните их правой кнопкой мыши, выберите Replace with...
, а затем выберите лучший вариант для вас, из Latest from Repository
или какая-то Branch
версия. После получения этих файлов вы изменяете их (с пробелами или что-то исправляете), вызываете их и фиксируете, чтобы создать более новую ревизию.
Более чистый способ - выбрать Merge
в командном меню и перейти к мастеру, который поможет вам восстановить старую версию в действующей редакции.
Обе команды имеют свои эквиваленты командной строки: svn revert
и svn merge
.
Другие советы
В 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 файлов, указанных выше, в исходный файл. Что бы вы ни выбрали, когда вы закончите, пометьте конфликт как разрешенный
Команда - Марк решен
Временные файлы будут удалены, а ваш файл будет помечен как измененный. Как и в 1, вы должны зафиксировать изменения.
Обратите внимание, что это не удаляет ревизии из истории ревизий в хранилище svn. Вы просто сделали новую ревизию, в которой удаляются изменения из неверной ревизии.
Если вы хотите создать по 1 файлу за раз, вы можете перейти к представлению «Журнал» для этого файла, если у вас установлен плагин Eclipse SVN. " Team - > Показать историю "
В представлении «История» найдите последнюю хорошую версию этого файла, щелкните правой кнопкой мыши и выберите " Получить содержимое " ;. Это заменит вашу текущую версию содержимым этой версии. Затем вы можете зафиксировать изменения, когда все исправите.
В Eclipse с использованием Subversive:
Щелкните правой кнопкой мыши свой проект > Команда & Gt; Слияние
В окне слияния выберите ревизии, которые вы хотите отменить как обычно, но также включите флажок " Обратное слияние ".
Объединяйте как обычно.
Я написал пару постов в блоге на эту тему. Тот, который ориентирован на Subclipse: http: // markphip.blogspot.com/2007/01/how-to-undo-commit-in-subversion.html и ориентированный на командную строку: http://blogs.collab.net/subversion/2007/07/second-chances/
В svnbook есть раздел о том, как Subversion позволяет отменить изменения из определенной ревизии, не затрагивая изменения, произошедшие в последующих ревизиях:
http: / /svnbook.red-bean.com/en/1.4/svn.branchmerge.commonuses.html#svn.branchmerge.commonuses.undo р>
Я почти не использую Eclipse, но в TortoiseSVN вы можете сделать это из диалога журнала; просто щелкните правой кнопкой мыши на ревизии, которую вы хотите отменить, и выберите " Отменить изменения из этой ревизии ".
В случае, если файлы, для которых вы хотите восстановить " плохие изменения " имел " хорошие изменения " в последующих ревизиях процесс тот же. Изменения из & Quot; bad & Quot; ревизия будет отменена, оставляя изменения из " good " редакции нетронуты, однако вы можете столкнуться с конфликтами.
У меня та же проблема, но опция CleanUp eclipse для меня не работает.
1) установить TortoiseSVN
2) Зайдите в проводник Windows и щелкните правой кнопкой мыши по каталогу вашего проекта
3 Выбор варианта очистки (путем проверки блокировки блокировки)
Это работает.
Надеюсь, это кому-нибудь поможет.