Önceki cevapların çoğu ters birleştirme kullanıyordu ve bu genellikle doğru cevaptı. Ancak, olmayan bir durum var (ki bu benim başıma geldi).
Küçük bir değişiklik yaparken yanlışlıkla DOS satır sonlarına Unix satır sonları ile bir dosyayı değiştirdim ve bunu taahhüt. Bu, satır sonlarını değiştirerek ve tekrar işleyerek ya da ters birleştirmeyle kolayca geri alınır, ancak svn blame
listemi düzenlemeyi dosyanın her satırının kaynağı olarak yapma etkisi vardır . (İlginçtir, Windows'daki TortoiseSVN bundan etkilenmez; sadece komut satırı svn blame
.)
Geçmişi tarafından bildirildiği gibi korumak istiyorsanız svn blame
, aşağıdakileri yapmanız gerektiğini düşünüyorum:
- Dosyayı silin ve kesin.
- Havuzda, dosyanın önceki iyi kopyasını kafasına kopyalayın ve taahhüt edin.
- Saklamak istediğiniz düzenlemeleri geri yükleyin.
Silme işlemi biraz korkutucu, ancak dosyayı her zaman depoya kaydettiğinizi unutmayın, bu nedenle geri yükleme büyük bir sorun değildir. Adımları gösteren bazı kodlar. Bunun xxx
son iyi kopyanın revizyon numarası olduğunu varsayalım .
svn rm svn+ssh://path/to/file
svn copy svn+ssh://path/to/file@xxx svn+ssh://path/to -m"Restore good copy"
svn update
<restore the edits>
svn commit -m"Restore edits"
Depodaki bir kopya için, hedefin bir dosya adı değil, bir dizin olması gerektiğini unutmayın.