Saya menghapus file dari repo dan sekarang ingin mengembalikannya. Yang terbaik yang bisa saya pikirkan adalah:
- perbarui ke revisi sebelum menghapus
- salin file di tempat lain
- update ke head
- salin file kembali
- tambahkan mereka
- melakukan
Itu hanya baunya tidak enak dan kehilangan semua sejarah untuk boot. Pasti ada cara yang lebih baik untuk melakukan ini. Saya telah melihat di Buku SVN tetapi tidak menemukan apa pun dan sekarang sedang melihat daftar tag SVN.
svn
tortoisesvn
restore
BCS
sumber
sumber
Jawaban:
Gunakan svn merge:
Jadi contohnya:
Untuk TortoiseSVN (Saya pikir ...)
Itu sama sekali belum teruji.
Diedit oleh OP : Ini berfungsi pada versi TortoiseSVN saya (jenis lama tanpa tombol berikutnya)
Triknya adalah menggabungkan mundur . Kudos to sean.bright karena telah mengarahkan saya ke arah yang benar!
Sunting: Kami menggunakan versi yang berbeda. Metode yang saya jelaskan bekerja sempurna dengan versi TortoiseSVN saya.
Yang juga perlu diperhatikan adalah bahwa jika ada beberapa perubahan dalam komit, Anda membalikkan penggabungan, Anda akan ingin mengembalikan perubahan lain itu setelah penggabungan selesai sebelum Anda berkomitmen. Jika tidak, perubahan ekstra tersebut juga akan dibatalkan.
sumber
Masalah dengan melakukan penggabungan svn seperti yang disarankan oleh Sean Bright adalah memperkenalkan kembali perubahan lain yang dibuat dalam revisi yang sama seperti penghapusan. Salinan svn adalah operasi yang lebih bertarget yang hanya akan mempengaruhi file yang dihapus.
Menggunakan Tortoise SVN Anda bisa menghidupkan kembali file yang telah dihapus dari direktori copy pekerjaan Anda dan dari revisi SVN nanti, melalui salinan svn sebagai berikut:
File yang dihapus sekarang akan berada di folder copy pekerjaan. Untuk menambahkannya kembali ke SVN, klik kanan pada file yang dipulihkan dan pilih SVN Commit.
NB: Metode ini akan mempertahankan riwayat sebelumnya dari file yang dipulihkan, namun untuk melihat riwayat sebelumnya dalam log TortoiseSVN Anda perlu memastikan "Berhenti saat menyalin / mengganti nama" tidak dicentang dalam dialog Pesan log.
sumber
svn cp -r 1993 http://example.com/svn/trunk/path@1993 http://example.com/svn/trunk/path
merge
, tapi saya tidak memahaminya.Untuk kelengkapan, inilah yang akan Anda temukan di buku svn, seandainya Anda tahu apa yang harus dicari. Itu yang sudah Anda temukan:
Membatalkan Perubahan
Menghidupkan Kembali Item yang Dihapus
Hal yang sama, dari versi buku yang lebih baru (dan mendetail):
Membatalkan Perubahan
Menghidupkan Kembali Item yang Dihapus
sumber
Gunakan fungsionalitas salin Tortoise SVN untuk mengembalikan perubahan yang dilakukan:
Semoga membantu
sumber
Saya sepertinya selalu menggunakan svn copy sebagai operasi server jadi tidak yakin apakah itu bekerja dengan dua jalur kerja.
Berikut adalah contoh memulihkan file yang terhapus ke dalam copy pekerjaan lokal proyek:
Saat berada di dalam direktori proyek. Ini berfungsi juga untuk memulihkan seluruh direktori.
sumber
Jika Anda menggunakan Tortoise SVN, Anda seharusnya bisa mengembalikan perubahan dari revisi itu ke copy pekerjaan Anda (secara efektif melakukan penggabungan terbalik), lalu lakukan komit lain untuk menambahkan kembali file. Langkah-langkah yang harus diikuti adalah:
sumber
Cara termudah agar saya dapat memulihkan file dan tidak kehilangan riwayat revisi adalah menggunakan salinan SVN , contoh penggabungan di atas bagi saya tampak seperti cara yang lebih kompleks untuk mencapai hal yang sama. Mengapa ada kebutuhan untuk menggabungkan saat Anda hanya ingin memulihkan revisi?
Saya menggunakan yang berikut dalam contoh ini dan itu bekerja dengan cukup baik.
Saya sepertinya selalu menggunakan
svn copy
sebagai operasi server jadi tidak yakin apakah itu bekerja dengan dua jalur kerja.sumber
Dengan Tortoise SVN :
sumber
Anda seharusnya bisa memeriksa satu file yang ingin Anda pulihkan. Cobalah sesuatu seperti di
svn co svn://your_repos/path/to/file/you/want/to/restore@rev
manarev
revisi terakhir di mana file tersebut ada.Saya harus melakukan ini beberapa saat yang lalu dan jika saya ingat dengan benar, menggunakan
-r
opsi untuksvn
tidak berhasil; Saya harus menggunakan:rev
sintaks. (Meskipun saya mungkin mengingatnya mundur ...)sumber