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


157

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

Ответы:


282

Это было бы:

svn rm --keep-local

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

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

svn rm --keep-local FILENAME

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


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

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>

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.