Если вы только что сделали
svn rm foo.txt
тогда вы можете отменить это просто
svn revert foo.txt
Если вы уже зарегистрировались после выполнения операции "svn rm
", вы можете просмотреть журнал (svn log
), найти последнюю ревизию, в которой существовал файл, и извлечь ее из этой версии.
Один из способов сделать это - объединить старую ревизию с файлом. Предполагая, что текущая ревизия равна 123, а последняя версия с этим файлом - 120, сделайте следующее:
svn merge -r123:120
Может быть, сначала выполните пробный прогон, чтобы убедиться, что он не будет делать то, что вам не нужно:
svn --dry-run merge -r123:120
Для подвопроса, как удалить файл из SVN, не удаляя локальную копию:
svn rm foo.txt --keep-local
Или, конечно, вы можете просто скопировать во временный файл перед svn rm'ing и затем скопировать обратно:
cp foo.txt foo.txt-tmp
svn rm foo.txt
(svn ci -m "just removed foo.txt from the repository")
cp foo.txt-tmp foo.txt