SVN вернуться из ревизии - PullRequest
       1

SVN вернуться из ревизии

8 голосов
/ 27 октября 2010

Есть ли способ вернуться из определенного набора изменений?

Изменения были зафиксированы, как я вижу из набора изменений.Теперь я хочу вернуть файлы обратно до того, как они были зафиксированы.

Я сделал svn revert path / to / file, но он не запрашивает пароль или что-то еще.Ничего не происходит.

Ответы [ 5 ]

3 голосов
/ 27 октября 2010

Решено: svn merge -r1234: 4321 путь / к / пути к вашему файлу / к / файлу, который вы хотите использовать,

где1234 твоя ревизия4321 - это версия, к которой вы хотите вернуться.

3 голосов
/ 27 октября 2010

Вы можете выполнить «обратное слияние», т. Е. «Применить» все изменения ОТ текущей ревизии К ревизии, к которой вы хотите вернуться (т. Е. Отменить все изменения ОТ ревизии, к которой вы хотите вернуться, к текущей ревизии).

svn merge -r HEAD:nnnn .

где nnnn - ревизия, к которой вы хотите вернуться.http://svnbook.red -bean.com / ru / 1.5 / svn.ref.svn.c.merge.html

После просмотра изменений, разрешения любых конфликтов и т. Д. Используйте svn commitотправить изменения в хранилище.

2 голосов
/ 30 января 2013

Самый простой способ описан в SVN Book :

$ svn merge -c -303 http://svn.example.com/repos/calc/trunk

Это отменит любые изменения, сделанные в наборе изменений 303, и вы можете просмотреть и зафиксировать их при необходимости.

1 голос
/ 12 января 2012

Если вам известна определенная ревизия, которую вы хотите отменить, это еще один способ ее возврата.

svn diff -c r1031 | grep ^Index | awk '{ print $2}' | xargs -I {file} svn export -r 1030 {file} {file}

Он находит все файлы, измененные в r1031, и заменяет их теми же файлами из ревизии 1030.

PS: Также, пожалуйста, будьте осторожны, если файлы, которые вы хотите восстановить, отсутствуют в 1030. Возможно, это сработает не так, как вы ожидали.

0 голосов
/ 04 октября 2012

Подробности смотрите в этой записи блога:

http://blog.mafr.de/2008/05/13/revert-a-commit-in-svn/

с хорошим объяснением:

Чтобы понять, что здесь происходит, нужно знать, что команда слияния делает концептуально: она записывает, какие изменения должны быть сделано в ревизию N, чтобы превратить его в ревизию N + 1 (называется дельта) и применяет его к рабочей копии. Это не то, что мы хотим в нашем сценарий, поэтому мы изменим обычный порядок изменений в команде линия. По сути, мы говорим команде слияния, чтобы создать дельту в объезд. Результатом является «перемотка» базы кода.

А также, в комментариях, как это сделать в TortoiseSVN:

Чтобы сделать это с помощью TortoiseSVN, щелкните правой кнопкой мыши каталог или файл. Вы хотите вернуться и использовать «Объединить» из меню TortoiseSVN. Выбрать опция «Объединить два разных дерева». Под «От» выберите Голову пересмотр. В разделе «Кому» выберите старую версию + 1 (т. Е. Если вы хотите чтобы вернуться к ревизии 169, введите ревизию 170 в поле).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...