Taahhüt etmeden önce svn'ye bir dosyayı “kaldırmayın”


200

Özyinelemeli svn add / commit yapmanın ortasındaydım ve uygun yoksayma özelliklerine sahip olmayan bir klasör dahil edildi. Şu anda sürümde yüklenen yaklaşık 100 ikili dosya var, ancak henüz işlemedim.

Tüm belgeleri silmeden bunu 'geri almanın' en kolay yolu nedir?

Yanıtlar:


244

kullanım svn revert --recursive folder_name


Uyarı

svn revertasıl olarak tehlikelidir, çünkü tüm amacı veriyi atmaktır - yani, taahhüt edilmemiş değişikliklerinizi. Geri döndükten sonra Subversion, bu taahhüt edilmeyen değişiklikleri geri almanın bir yolunu sunmaz.

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


12
Bunu genişletmek için - revertbelirtilen bir düzeltme olmadan, belirtilen dosya (lar) için zamanlama değişiklikleri ekleme / silme de dahil olmak üzere, son ödeme işleminden bu yana meydana gelen değişiklikleri geri alır.
Amber

Burada klasör_adı, "Ekle" komutunu yaptığınız klasörün üst klasörüdür
MacGyver

28
Bu cevap tehlikeli bir şekilde yanlıştır - DOSYALARIN YEREL KOPYALARINI KALDIRARAK değişikliklerinizi bozacaktır. Brian Lacy'nin aşağıdaki cevabı çok daha iyi.
Henry Henrinson

6
Çocuklar, bu orijinal soruyu cevaplar: eklenmiş, daha sonra geri döndürülen bir dosya veya klasör, silinmeden yalnızca sürümlendirilmemiş duruma geri döner. Sorunun aynısı bu. Değiştirilmiş dosyalarda kullanırsanız, elbette onları geri alır: ama soru bu değildi. Bu, bağlantılı sayfada gösterilen çok özel kullanım durumu bile!
Julien Lebosquain

2
@JulienLebosquain Tamam, sanırım siz ve ben bu ifadeyi farklı bir şekilde anlıyoruz: tüm belgeleri silmeden . Ne yazık ki, en son sürümü geri yükleyerek çalışma kopyasında svn revertyeni eklenen değişiklikleri de siler HEAD. Aşağı oyumu kaldırdım, ancak hala uyarının önemli olduğunu hissediyorum.
jpaugh

148

svn rm --keep-local folder_name

Not: svn 1.5.4'te svn rm --keep-local belirtilse bile sürüm bilgisi olmayan dosyaları siler. Daha fazla bilgi için http://svn.haxx.se/users/archive-2009-11/0058.shtml adresine bakın .


9
Bu sadece değişiklikleri sv olmadan "svn add" geri almak sağlar gibi bilmek iyidir!
Ryan H.

1
SVN 1.5.4'ün sürüm bilgisi olmayan dosyaları sildiğinden emin misiniz? Rapor yeniden oluşturulamadı ve bu konuda başka bir e-posta yok.
Quentin Pradet

4
Eğer dosyaları "unadd" etmek, ama yine de tutmak istiyorsanız bu daha iyi bir cevaptır. Bu komuttan sonra dosyalar hala? durumu.
Robin Zimmermann

32

svn revert filenameİhtiyacınız olmayan ve henüz işlemediğiniz her dosyayı deneyin . Veya alternatif svn revert -R folderolarak sorunlu klasör için yapın ve sonra doğru yoksayma yapılandırması ile işlemi yeniden yapın.

Belgelerden:

 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
Hayır! Geri
dönmek

@jpaugh - Bu tam olarak cevapta yazdığım şey, değil mi?
bobah

1
Ne OP istedi (ve ne bekliyordum) eklenti geri almak için bir komut oldu olmadan yerel değişiklikler kaybediyor. svn revert. Buradaki cevapların hiçbiri, yerel değişikliklerin geri dönüş tarafından kaybedileceğinden bahsetmiyor.
jpaugh

3

Tam işlem (Unix svn paketi):

Çek dosyaları SVN'de değil:

> svn st -u folder 
? folder

Tümünü ekle (yok sayılan dosyalar dahil):

> 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

"Ekle" Tümüne İşaretle * Yoksay * dosyalarını kaldır:

> cd folder

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


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

Svn ignore klasörünü düzenle

svn propedit svn:ignore .

Yalnızca aşağıdakileri içeren iki tekli satır ekleyin:

folderToIgnore
fileToIgnore2.txt

Hangi dosyaların yüklenip yüklenmeyeceğini kontrol edin:

> 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
Teşekkürler, tam olarak ihtiyacım olan şey. Dosya içeriğinin kendisine dokunmak yerine yalnızca 'ekle' işlemini geri döndürdüğü anlaşılıyor. Önceki yanıtlarda yorumlandığı gibi yerel değişiklikleri kaybetmekten korktum, ancak hiçbir dosya zarar görmedi.
Peter M. - Monica için

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.