Отменить добавление SVN без возврата локальных правок

157

Я случайно запустил svn add *и добавил кучу файлов, которых не должно быть в хранилище. У меня также есть локальные правки в некоторых файлах, которые я хочу сохранить. Есть ли простой способ просто отменить, svn addне возвращая локальные изменения? Основное предложение, которое я вижу в Google: svn revertякобы отменяет локальные изменения.

jonderry
источник

Ответы:

282

Это было бы:

svn rm --keep-local

То же самое случилось со мной. :-П

Многие люди отметили, что вы должны использовать:

svn rm --keep-local FILENAME

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

Nostradamus1935
источник
1
Это не повлияло на меня. Я запустил код, как указано выше (включая завершающий период) из базовой папки. Не уверен, что я что-то упустил.
zzz
8
Обратите внимание, что вы должны добавить имя файла в команду, чтобы это было svn rm --keep-local FILENAME. FILENAMEМожет использовать * для сопоставления нескольких файлов (если вам повезет , достаточно иметь рисунок).
Адам Бадура
4
предупреждение! - использование этой команды при использовании svn externals также удаляет все подключенные внешние
элементы
2
Если вы фиксируете это, не будет ли зафиксировано удаление указанного файла из репозитория?
JWG
1
// У меня тот же вопрос, что и у jwg. Я сделал некоторые изменения в SVN-контролируемом файле. Я хочу сохранить эти изменения на местном уровне. Однако я не хочу удалять файл из хранилища вообще. Я просто не хочу помещать свои локальные изменения в файл.
Натан Басанезе
34

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

svn delete --keep-local /path/to/directory

Однако, если эти файлы уже находятся в репозитории и теперь содержат изменения, которые вы не хотите фиксировать, вы можете зафиксировать остальные файлы с помощью списков изменений:

svn changelist somename /file/to/be/committed
svn commit --changelist somename
Juampy NR
источник
7

Вы можете исправить свой заказ следующим образом:

  1. Сделайте резервную копию ваших локальных файлов
  2. Восстановить оформление SVN
  3. Восстановите файлы

-

rsync -av --exclude .svn/ YOURDIR/ YOURDIR.bak
svn revert -R YOURDIR
rsync -av YOURDIR.bak/ YOURDIR 
Брайс М. Демпси
источник
Последняя команда всегда создает дополнительный уровень каталога, т. Е. Заканчивается на YOURDIR/YOURDIR/, хотя я думаю, что проблема заключается в первоначальном создании команды резервного копирования YOURDIR.bak/YOURDIR/.
Джеймс
Чтобы избежать этого, rsync требует косой черты в исходном каталоге. Я отредактировал ответ.
Брайс М. Демпси
3

У меня была такая же проблема, я случайно добавил каталог / через svn addкоторый содержит двоичные файлы и скомпилированный файл. Эта команда фактически удаляет каталог.

svn rm --force <directory-name>

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

Пушья
источник