"Скасувати" файл до svn перед фіксацією


200

Я був в середині робити рекурсивне додавання / фіксація svn, і була включена папка, яка не мала належних властивостей ігнорування. Зараз у мене вже близько 100 завантажених бінарних файлів, але я ще не вчинив.

Який найпростіший спосіб "скасувати", не видаляючи всіх документів?

Відповіді:


244

Використовуйте svn revert --recursive folder_name


Увага

svn revertза своєю суттю небезпечно, оскільки вся його мета - викидати дані, а саме - ваші невмілі зміни. Після повернення Subversion не дає змоги повернути ці незатверджені зміни.

http://svnbook.red-bean.com/en/1.7/svn.ref.svn.c.revert.html


12
Щоб розширити це - revertбез уточненої редакції скасовується будь-які зміни, що відбулися з моменту останньої каси, включаючи додавання / видалення змін у плануванні, для вказаних файлів.
Бурштин

де папка_файна - це батьківська папка папки, де ви виконали команду "Додати"
MacGyver

28
Ця відповідь небезпечно невірна - вона знешкодить ваші зміни, ВІДКРИТИ ВІДМОВНІ КОПІЇ ФАЙЛІВ. Відповідь Брайана Лейсі нижче є набагато кращою.
Генрі Генрінсон

6
Хлопці, це відповідає на оригінальне запитання: файл або папку, яку було додано, потім повернено, повертається лише до неперевершеної версії, не видаляючись. Саме це і задає питання. Якщо ви використовуєте його в модифікованих файлах, звичайно, він повертає їх, але це не питання. Це навіть той самий конкретний випадок використання, який відображений на пов'язаній сторінці!
Жульєн Лебосквайн

2
@JulienLebosquain Добре, я думаю, ви і я розумію цю фразу по-різному: без видалення всіх документів . На жаль, svn revertтакож видаляються нещодавно додані зміни в робочій копії шляхом відновлення останньої HEADверсії. Я зняв свій потік, але я все ще вважаю, що попередження є важливим.
jpaugh

145

svn rm --keep-local folder_name

Примітка: у svn 1.5.4 svn rm видаляє неперевершені файли, навіть коли вказано --keep-local. Докладнішу інформацію див. У розділі http://svn.haxx.se/users/archive-2009-11/0058.shtml .


9
Це добре знати, оскільки це дозволяє просто скасувати "svn add", не втрачаючи змін!
Райан Х.

1
Ви впевнені, що SVN 1.5.4 видаляє неперевершені файли? Звіт не був відтворюваним, і про це немає іншого електронного листа.
Квентін Прадет

4
Це краща відповідь, якщо ви хочете "скасувати" файли, але все ж зберігати їх. Після цієї команди файли все ще будуть там? статус.
Робін Циммерманн

32

Спробуйте svn revert filenameкожен файл, який вам не потрібен і ще не введено. Або, можливо, зробіть svn revert -R folderдля проблемної папки, а потім повторіть операцію з правильним ігноруванням конфігурації.

З документації:

 you can undo any scheduling operations:

$ svn add mistake.txt whoops
A         mistake.txt
A         whoops
A         whoops/oopsie.c

$ svn revert mistake.txt whoops
Reverted mistake.txt
Reverted whoops

4
Немає! Повернення небезпечно, оскільки втрачає всі локальні зміни
jpaugh

@jpaugh - Це саме те, що я написав у відповіді, ні?
бобах

1
Те, що просив ОП (і що я очікував) - це команда скасувати додавання, не втрачаючи локальних змін. svn revert. Жодна з відповідей тут не згадує той факт, що локальні зміни будуть втрачені в результаті повернення.
jpaugh

3

Повний процес (пакет Unix svn):

Перевірка файлів не в SVN:

> svn st -u folder 
? folder

Додайте всі (включаючи ігноровані файли):

> svn add folder
A   folder
A   folder/file1.txt
A   folder/folder2
A   folder/folder2/file2.txt
A   folder/folderToIgnore
A   folder/folderToIgnore/fileToIgnore1.txt
A   fileToIgnore2.txt

Видаліть "Додати" Позначити всі файли * Ігнорувати *:

> cd folder

> svn revert --recursive folderToIgnore
Reverted 'folderToIgnore'
Reverted 'folderToIgnore/fileToIgnore1.txt'


> svn revert fileToIgnore2.txt
Reverted 'fileToIgnore2.txt'

Редагувати svn ignore у папці

svn propedit svn:ignore .

Додайте два сингл-рядки лише з наступним:

folderToIgnore
fileToIgnore2.txt

Перевірте, які файли будуть завантажуватись та виконувати:

> cd ..

> svn st -u
A   folder
A   folder/file1.txt
A   folder/folder2
A   folder/folder2/file2.txt


> svn ci -m "Commit message here"

1
Дякую, саме те, що мені було потрібно. Здається, він повернув лише операцію "додавання", не торкаючись самого вмісту файлу. Мені було страшно втратити локальні зміни, коментуючи попередні відповіді, але, схоже, жодні файли не пошкодили.
Пітер М. - виступає за Моніку

1

Для файлів - svn revert filename

Для папок - svn revert -R folder


4
Немає! Повернення небезпечно, оскільки втрачає всі локальні зміни
jpaugh
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.