Сегодня утром мне удалось прострелить себе ногу, выполнив следующие действия:
- Началась работа над изменением моего проекта
- Кучу правок в кучу файлов
- Понял, что мой подход был неправильным, и что мне нужно начинать сначала
- cd'd на верхний уровень моего проекта и выполнил "svn --recursive revert". чтобы восстановить мою локальную песочницу до состояния до изменений.
- Завыл от ужаса, когда понял, что в моей локальной песочнице произошел ряд других изменений, и я только что стер их все. (сервер svn не работал в прошлую пятницу, поэтому я не смог их зарегистрировать и забыл о них на выходных)
К счастью, в этом случае я сделал "svn diff> temp.txt" перед уходом с работы в пятницу, и файл temp.txt все еще был на моем жестком диске, поэтому я смог загрузить этот файл в "патч" и восстановить свой потерял изменения.
Но для моей справки в будущем (т.е. в следующий раз, когда я сделаю ту же глупую ошибку) ... есть ли способ сказать svn отменить "svn revert"? Сохраняет ли svn где-нибудь резервную копию локальных / незарегистрированных различий?
Ответы:
Нет, (абсолютно) НЕТ .
Если вы скажете Subversion, что нужно вернуть файл, все изменения улетучиваются.
Только ваша память может вернуть их.
Исключение: новые файлы, которые вы добавили, потеряют только свой статус «добавлен», но файл останется в этом каталоге, только статус неизвестен («?»)
Исключение платформы / программного обеспечения: при использовании TortoiseSVN в Windows функция «Восстановить» сначала помещает файлы в корзину, а затем возвращает их обратно. Вы можете покопаться в Корзине, чтобы восстановить файлы.
источник
Есть решение ... перейдите в корзину, там вы найдете последнюю версию удаленного файла. Черепаха «выбрасывает» в корзину каждый файл, который она восстанавливает.
источник
Не совсем для Subversion, но если вы работаете с Eclipse, вы можете попытать счастья в местной истории.
Теперь кое-что более специфичное для Subversion: если вы не хотите создавать ветвь для каждого изменения, которое вы делаете, вы можете оставить пару стволов на месте (trunk-modif-1, trunk-modif-2 .. .). Каждая «модификация» выполняется в отдельном дереве, и вам нужно только вести список, чья проверка соответствует какой модификации.
Или вы можете использовать Git локально, но я никогда не пробовал.
источник
Недавно сделал эту ошибку, не фиксируя новые изменения файлов (около 10) в SVN, и все они исчезли из-за моей глупой ошибки. Но меня спасла опция Windows «Восстановить предыдущие версии» в контекстном меню. Уф, это было облегчение и урок.
источник
Вы не можете восстановить файлы, если используете клиент командной строки svn .
Но вы можете восстановить их, если используете TortoiseSVN в качестве клиента svn. TortoiseSVN автоматически переместит их в вашу корзину. Вы можете восстановить их оттуда после случайного возврата.
Это настраиваемая опция в TortoiseSVN. Он находится в разделе « Настройки» -> «Диалог 1» -> «Использовать корзину при возврате».
По умолчанию он отмечен, что означает, что файлы перемещаются в корзину. Если вы хотите (в большинстве случаев вы не хотите отключать это. Если у вас есть причина, дайте мне знать)
источник
Если вы используете InteliJ, то вам повезло. В верхнем меню у вас есть опция контроля версий, а под ней вы найдете опцию локальной истории, где вы найдете всю историю для выбранного файла, включая все операции, которые вы сделали с этим файлом (обновление, фиксация, возврат).
Удачи, Аркде
источник
Также, если вы вернули свой код .NET (файлы .cs и т. Д.) И создали приложение до возврата, но после внесения изменений, вы можете восстановить изменения из файла сборки, используя любой из инструментов отражателя для просмотра кода.
источник
Мне очень повезло найти локальный журнал изменений файла (Local Revisions) в браузере истории в Eclipse. Я изучал различия одно за другим и сделал пару сохранений в файле перед перезаписью.
источник
Я вернул решение (Visual Studio + AnkhSVN) и потерял изменения в нескольких файлах. Я не могу найти файл в корзине.
НО: Я восстановил потерянные файлы с помощью Handy Recovery, т.е. SVN просто удаляет мои файлы при возврате.
Используйте любое программное обеспечение для восстановления данных для восстановления возвращенных файлов (например, пробную версию Handy Recovery )
источник
Нет, SVN не ведет журнал или резервную копию (хотя есть решение для TortoiseSVN, указанное в других ответах).
Но если кто-то просматривает ответы и не заметил этот комментарий в вопросе OP:
«К счастью, в этом случае я сделал« svn diff> temp.txt »перед уходом с работы в пятницу, и файл temp.txt все еще был на моем жестком диске, поэтому я смог загрузить этот файл в« патч »и восстановить мои потерянные изменения ".
Я полагаю, что это обычная парадигма делать 'svn diff' ДО того, как вы сделаете 'svn revert'. Если у вас появится привычка делать это, даже если разница просто выводится на терминал, у вас есть по крайней мере один возможный способ восстановить потерянные изменения.
источник