“Unadd” file ke svn sebelum melakukan


200

Saya sedang melakukan penambahan / komit svn rekursif, dan folder yang tidak memiliki properti abaikan sudah dimasukkan. Saya memiliki sekitar 100 file biner yang diunggah versi sekarang, tetapi saya belum berkomitmen.

Apa cara termudah untuk 'membatalkan' ini, tanpa menghapus semua dokumen?

Jawaban:


244

Menggunakan svn revert --recursive folder_name


Peringatan

svn revertpada dasarnya berbahaya, karena seluruh tujuannya adalah untuk membuang data - yaitu, perubahan yang tidak dikomit. Setelah Anda kembali, Subversion tidak memberikan cara untuk mengembalikan perubahan yang tidak dikomit itu.

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


12
Untuk memperluas ini - reverttanpa revisi yang ditentukan membatalkan perubahan yang terjadi sejak checkout terakhir, termasuk menambah / menghapus perubahan penjadwalan, untuk file yang ditentukan.
Amber

di mana folder_name adalah folder induk dari folder tempat Anda melakukan perintah "Add"
MacGyver

28
Jawaban ini sangat salah - ia akan membatalkan perubahan Anda DENGAN MENGHAPUS SALINAN FILM ANDA. Jawaban Brian Lacy di bawah ini jauh lebih baik.
Henry Henrinson

6
Kawan, ini menjawab pertanyaan awal: file atau folder yang ditambahkan, lalu dikembalikan, hanya kembali menjadi bukan versi, tanpa dihapus. Persis seperti itulah pertanyaannya. Jika Anda menggunakannya pada file yang dimodifikasi, tentu saja akan mengembalikannya: tetapi bukan itu pertanyaannya. Itu bahkan kasus penggunaan yang sangat spesifik ditunjukkan pada halaman yang ditautkan!
Julien Lebosquain

2
@ JulienLebosquain Ok, saya kira Anda dan saya memahami frasa ini secara berbeda: tanpa menghapus semua dokumen . Sayangnya, svn reverttidak juga menghapus baru ditambahkan perubahan dalam copy pekerjaan, dengan mengembalikan terbaru HEADversi. Saya menghapus downvote saya, tetapi saya masih merasa peringatan itu penting.
jpaugh

145

svn rm --keep-local folder_name

Catatan: Dalam svn 1.5.4 svn rm menghapus file tidak berversi bahkan ketika --keep-local ditentukan. Lihat http://svn.haxx.se/users/archive-2009-11/0058.shtml untuk informasi lebih lanjut.


9
Ini bagus untuk diketahui karena memungkinkan Anda untuk membatalkan "svn add" tanpa kehilangan perubahan!
Ryan H.

1
Apakah Anda yakin SVN 1.5.4 menghapus file tidak berversi? Laporan itu tidak dapat direproduksi, dan tidak ada email lain tentang itu.
Quentin Pradet

4
Ini adalah jawaban yang lebih baik jika Anda ingin "membuka" file, tetapi tetap menyimpannya. Setelah perintah ini, file akan tetap ada dengan? status.
Robin Zimmermann

32

Cobalah svn revert filenameuntuk setiap file yang tidak Anda butuhkan dan belum berkomitmen. Atau alternatifnya lakukan svn revert -R folderuntuk folder yang bermasalah dan kemudian lakukan kembali operasi dengan konfigurasi pengabaian yang benar.

Dari dokumentasi:

 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
Tidak! Kembalikan tidak aman, karena kehilangan semua perubahan lokal
jpaugh

@ jpaugh - Inilah yang saya tulis dalam jawabannya, bukan?
bobah

1
Apa yang diminta OP (dan apa yang saya harapkan) adalah perintah untuk membatalkan add tanpa menghilangkan perubahan lokal. svn revert. Tidak ada jawaban di sini yang menyebutkan fakta bahwa perubahan lokal akan hilang oleh revert.
jpaugh

3

Proses penuh (paket Unix svn):

Periksa file tidak dalam SVN:

> svn st -u folder 
? folder

Tambahkan semua (termasuk file yang diabaikan):

> 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

Hapus "Tambahkan" Tandai ke Semua * Abaikan * file:

> cd folder

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


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

Edit svn abaikan pada folder

svn propedit svn:ignore .

Tambahkan dua baris single dengan hanya yang berikut:

folderToIgnore
fileToIgnore2.txt

Periksa file mana yang akan diunggah dan komit:

> 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
Terima kasih, persis apa yang saya butuhkan. Tampaknya hanya mengembalikan operasi 'add', tidak menyentuh konten file itu sendiri. Saya takut kehilangan perubahan lokal seperti mengomentari jawaban sebelumnya, tetapi sepertinya tidak ada file yang dirusak.
Peter M. - singkatan dari Monica

1

Untuk File - svn revert filename

Untuk Folder - svn revert -R folder


4
Tidak! Kembalikan tidak aman, karena kehilangan semua perubahan lokal
jpaugh
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.