2008-08-30 6 views
73

Предположим, что я внес некоторые плохие изменения в репозиторий Subversion. Затем я совершаю хорошие изменения, которые я хочу сохранить.Откат плохих изменений с помощью svn в Eclipse

Что было бы самым простым способом отбросить эти плохие изменения в Eclipse и сохранить хорошие изменения? Предполагая, что файлы, относящиеся к плохим изменениям, не такие, как файлы, относящиеся к хорошим изменениям. Как изменились вещи, если бы были внесены хорошие изменения в те же файлы, что и плохие изменения?

Я в основном ищу способ сделать это с помощью плагинов Eclipse (Subclipse или Subversive), но также интересны команды командной строки.

ответ

30

У вас есть два варианта сделать это.

Быстрый и Грязный выбирает файлы (с помощью Ctrl) в Project Explorer, зрения, щелкните правой кнопкой мыши их, выберите Replace with..., а затем выбрать лучший вариант для вас, от Latest from Repository, или некоторые Branch версии. После получения этих файлов вы их модифицируете (с пробелом или исправляете что-то, ваш звонок и обязываете их создавать более новую версию.

Более чистый способ - выбрать Merge в меню команды и перейти через мастер, который поможет вам . для восстановления старой версии в актуальной редакции

Обе команды имеют командной строки эквиваленты:. svn revert и svn merge

+0

Последний из репозитория ошибочно проверен, поэтому я не вижу, где он должен быть полезен. Кроме того, eclipse не хочет помочь вам решить эту проблему, потому что только опция упоминания доступна, если вы выберете несколько файлов (вероятно, потому, что их версия латтеров отличается). – Macilias 2015-08-28 15:11:21

1

svnbook есть раздел о том, как Subversion позволяет отменить изменения от конкретной ревизии без влияющие на изменения, произошедшие в последующих пересмотрах:

http://svnbook.red-bean.com/en/1.4/svn.branchmerge.commonuses.html#svn.branchmerge.commonuses.undo

Я не использую Eclipse, много, но в TortoiseSVN вы можете сделать это из из диалога журнала; просто щелкните правой кнопкой мыши на ревизии, которую вы хотите вернуть, и выберите «Отменить изменения из этой ревизии».

В случае, если файлы, для которых вы хотите вернуть «плохие изменения», имели «хорошие изменения» в последующих ревизиях, тогда процесс остается прежним. Изменения от «плохой» ревизии будут отменены, оставив изменения от «хороших» изменений нетронутыми, однако вы можете столкнуться с конфликтами.

70

В Eclipse Ганимед (Subclipse)

Выберите проект/файл, который содержит плохие изменения, и из всплывающего меню выберите:

Team -> Показать История

Изменения, связанные с этим проектом/файл будет показан на вкладке История.

редакция Find, где «плохие изменения» были совершены, и из всплывающего меню выберите:

Revert Изменения с версии X

Это позволит объединить несколько изменений в файл (ы) измененными в плохой ревизии, с пересмотром до плохой ревизии.

Есть два сценария отсюда:

  1. Если вы не совершили никаких изменений для этого файла (плохой пересмотр последнего изменения для этого файла), он будет просто удалить изменения, внесенные в плохой ревизии. Эти изменения объединены с вашей рабочей копией, поэтому вы должны их совершить.

  2. Если вы сделали некоторые изменения для этого файла (плохая ревизия не является последней ревизией для этого файла), вам придется вручную разрешить конфликт. Скажем, что у вас есть файл readme.txt с, а неправильный номер версии - 33. Кроме того, вы сделали еще одну фиксацию для этого файла в редакции 34. После того, как вы выберете Отмените изменения с версии 33, у вас будет следующее в вашей рабочей копия:

readme.txt.merge-left.r33 - плохая редакция

readme.txt.merge-right.r32 - прежде чем плохой пересмотр

readme.txt .W orking - рабочая версия копии (такая же, как в r34, если у вас нет каких-либо незафиксированных изменений)

Оригинал readme.txt будет помечен как конфликтный и будет содержать объединенную версию (где изменения из плохой версии удаляются) с некоторыми маркеры (< < < < < < < .working и т. д.). Если вы просто хотите удалить изменения из плохой версии и сохранить изменения после этого, то все, что вам нужно сделать, это удалить маркеры. В противном случае вы можете скопировать содержимое из одного из трех файлов, упомянутых выше, в исходный файл. Что бы вы ни выбрали, когда вы закончите, отметьте конфликт разрешен

Team - Марк Решенного

Временные файлы будут удалены, и ваш файл будет помечен измененным. Как и в 1, вы должны зафиксировать изменения.

Обратите внимание, что это не удаляет ревизию из истории изменений в репозитории svn. Вы просто сделали новую ревизию, в которой удалены изменения из плохой версии.

10

Если вы хотите сделать 1 файл за один раз, вы можете перейти в представление «История» для файла, предполагая, что установлен плагин Eclipse SVN. «Team-> Показать историю»

В окне «История» найдите последнюю хорошую версию этого файла, щелкните правой кнопкой мыши и выберите «Получить содержимое». Это заменит вашу текущую версию содержимым этой версии. Затем вы можете зафиксировать изменения, когда все исправлено.

5

В Eclipse с помощью Subversive:

правой кнопкой мыши ваш проект> Команда> Merge

В окне слияния, выберите ревизии, которые вы хотите восстановить, как обычно, но и включить флажок «Обращенное слияния».

Объединить как обычно.

0

У меня такая же проблема, но опция CleanUp eclipse не работает для меня.

1) установить TortoiseSVN
2) Перейти к окнам Проводника и щелкни правую кнопку мыши на каталоге проекта
3 варианты выбора CleanUp (путем проверки опции блокировки разрыва)

Это работает.

Надеюсь, это поможет кому-то.

 Смежные вопросы

  • Нет связанных вопросов^_^