Скасувати додавання svn без зміни локальних змін


157

Я випадково побіг svn add *і додав купу файлів, які не повинні знаходитись у сховищі. Також я маю локальні зміни в деяких файлах, які я хочу зберегти. Чи є простий спосіб просто скасувати, svn addне скасовуючи локальні зміни? Основна пропозиція, яку я бачу в Google, - це те svn revert, що нібито скасовує місцеві зміни.

Відповіді:


282

Це було б:

svn rm --keep-local

Те саме трапилось і зі мною. :-P

Багато людей коментують, що ви повинні використовувати:

svn rm --keep-local FILENAME

застосувати команду до одного або багатьох файлів, а не до всіх, що може мати небажані побічні ефекти.


1
Це не мало для мене ефекту. Я запустив код, як зазначено вище (включаючи проміжок часу) з базової папки. Не впевнений, якщо я щось пропускаю.
zzz

8
Зауважте, що ви повинні додати ім'я файлу до команди, щоб це було svn rm --keep-local FILENAME. FILENAMEМоже використовувати * для зіставлення декількох файлів (якщо вам пощастить , достатньо мати малюнок).
Адам Бадура

4
увага! - за допомогою цієї команди під час використання зовнішніх зовнішніх
файлів

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.