Saya memiliki file seperti yang ditunjukkan di bawah ini dalam repo SVN yang ingin saya kembalikan ke versi sebelumnya. Apa cara untuk melakukan ini di SVN? Saya hanya ingin menurunkan versi file ini ke versi yang lebih lama, bukan seluruh repo.
Terima kasih.
$ svn log myfile.py
----------------------
r179 | xx | 2010-05-10
Change 3
----------------------
r175 | xx | 2010-05-08
Change 2
----------------------
r174 | xx | 2010-05-04
Initial
Jawaban:
Jika Anda hanya ingin file lama di copy pekerjaan Anda:
Jika Anda ingin mengembalikan , lihat ini " Bagaimana mengembalikan ke versi yang lebih lama dari kode kami dalam subversi? ".
sumber
svn cat juga membutuhkan revisi!
svn cat -r 175 mydir/myfile > mydir/myfile
sumber
ini harus mengembalikan satu file.
sumber
Untuk satu file, Anda dapat melakukan:
svn export -r <REV> svn://host/path/to/file/on/repos file.ext
Anda bisa melakukannya
svn revert <file>
tetapi itu hanya akan mengembalikan copy pekerjaan terakhir.sumber
Sejauh ini semua jawaban di sini tampaknya memiliki kelemahan yang signifikan, rumit (perlu menemukan URI repo) atau mereka tidak melakukan apa yang mungkin ditanyakan oleh pertanyaan: Bagaimana mendapatkan Repo dalam keadaan kerja lagi dengan versi yang lebih lama dari file .
svn merge -r head:[revision-number-to-revert-to] [file-path]
adalah IMO cara paling bersih dan paling sederhana untuk melakukan ini. Harap dicatat bahwa mengembalikan file yang dihapus tampaknya tidak berfungsi seperti ini [1]. Lihat juga pertanyaan berikut: Cara yang lebih baik untuk kembali ke revisi SVN file sebelumnya?[1] Untuk yang Anda inginkan
svn cp -r [rev-number] [repo-URI/file-path]@[rev-number] [repo-URI/file-path] && svn up
, lihat juga Apa cara yang benar untuk mengembalikan file yang dihapus dari SVN?sumber
svn merge
tidak mengambil banyak file sebagai argumen karena alasan tertentu. Dalam hal ini sepertinya tidak melakukan apa-apa (tanpa pesan kesalahan).Cara terbaik adalah:
Ini akan membatalkan semua file revisi daripada hanya mengembalikan file yang Anda tidak suka membatalkan. Jangan lupa tanda hubung (
-
) sebagai awalan untuk revisi.Sekarang komit perubahan kembali.
sumber
Anda ingin melakukannya
svn merge -r [revision to revert from]:[revision to revert to] [path/filename]
Setelah Anda melakukannya, Anda akan memiliki revisi file itu dalam keadaan yang dapat ditagih. Komit file.
sumber
Saya menemukan itu mudah untuk melakukan ini melalui
svn cat
perintah sehingga Anda bahkan tidak perlu menentukan revisi.Ini mungkin tidak akan memerankan data inode (metadata) seperti cap waktu.
sumber
Terkejut tidak ada yang menyebutkan ini
tanpa mengetahui nomor revisi yang dapat Anda tulis ini, jika Anda baru saja melakukan sesuatu yang ingin Anda kembalikan, ini tidak akan berfungsi jika Anda mengubah beberapa file lainnya dan file target bukanlah file yang terakhir diubah
sumber
svn merge -r HEAD:PREV file
seperti yang dikatakan @Nick RussoJika hanya beberapa file, dan jika Anda menggunakan Tortoise SVN, Anda dapat menggunakan pendekatan berikut:
sumber
Hanya menambahkan jawaban @Mitch Dempsy karena saya belum memiliki cukup rep untuk berkomentar.
Menambahkan --force akan menimpa salinan lokal dengan ekspor dan kemudian Anda dapat melakukan svn commit untuk mendorongnya ke repositori.
sumber
Opsi alternatif untuk satu file adalah "mengganti" versi file saat ini dengan revisi yang lebih lama:
Ini memiliki fitur tambahan bahwa perubahan yang tidak diinginkan tidak muncul dalam log untuk file ini (mis. Svn log file.ext).
sumber
Jika Anda ingin memutar kembali file individual dari revisi tertentu dan dapat melakukan, maka lakukan:
svn merge -c - [OldRev #] [Nama file]
yaitu.
svn merge -c -150 myfile.py
Perhatikan negatif pada nomor revisi
sumber
sumber