Saya telah menemukan berbagai contoh cara mengembalikan komit SVN
svn merge -r [current_version]:[previous_version] [repository_url]
atau
svn merge -c -[R] .
Tapi keduanya tidak bekerja. Saya mencoba perintah-perintah itu dan memeriksa file yang diubah dengan tangan.
Bagaimana cara mengembalikan komit dengan nomor revisi 1944? Bagaimana cara saya mengecek bahwa pengembalian telah dilakukan (tanpa melihat file sebenarnya dari perubahan yang telah dikembalikan)?
Jawaban:
Kedua contoh harus bekerja, tetapi
svn merge -r UPREV:LOWREV .
batalkan rentangsvn merge -c -REV .
batalkan revisi tunggaldalam sintaks ini - jika dir saat ini adalah WC dan (seperti yang harus dilakukan setelah setiap penggabungan) Anda akan memberikan hasil
Apakah Anda ingin melihat log?
sumber
svn: Merge source required
. Tidak ada dadu.svn merge -c -42587,-42589 .
Jika Anda menggunakan klien TortoiseSVN , itu mudah dilakukan melalui dialog Tampilkan Log .
sumber
svn merge -r 1944:1943 .
harus mengembalikan perubahan r1944 di copy pekerjaan Anda. Anda kemudian dapat meninjau perubahan dalam copy pekerjaan Anda (dengan diff), tetapi Anda harus berkomitmen untuk menerapkan pengembalian ke dalam repositori.sumber
svn merge -r 1944:1943 .
Sudah mencoba , tetapi tidak ada yang berubah.svn status
jugasvn diff
memberi apa pun.svn: Try 'svn help' for more info svn: Merge source required
svn merge -r 1945:1943 .
sepertinya sudah berhasil. Saya rasa saya mengerti: Anda perlu menggabungkan versi dari 'sebelum' komitmen 'buruk' ke dalam repositori kerja Anda. Ini ok ketika Anda ingin melakukan 'revert' sederhana dari komit sebelumnya. Tetapi bagaimana jika Anda ingin mengembalikan perubahan yang dibuat dengan versi 1900?Pertama, kembalikan copy pekerjaan ke 1943.
Kedua, periksa apa yang akan dilakukan.
Ketiga, komit versi 1945.
Keempat, lihat log baru.
sumber
Tidak mungkin untuk "tidak berkomitmen" revisi, tetapi Anda dapat mengembalikan copy pekerjaan Anda ke versi 1943 dan melakukan itu sebagai versi 1945. Versi 1943 dan 1945 akan identik, secara efektif mengembalikan perubahan.
sumber
svn dump
dan kemudiansvn load
. Tapi, tentu saja, ini tidak boleh digunakan dalam keadaan normal.$ git revert
. Saya merasa agak sulit untuk belajar SVN setelah menggunakan Git begitu lama.Berikut ini akan melakukan lari kering, seperti yang tertulis. HEAD menjadi versi saat ini, PREV sebelumnya, lalu jalur ke file Anda, atau item yang dikomit:
Jika proses kering terlihat bagus, jalankan perintah tanpa --dry-run
Verifikasi perubahan revisi dan komit kembali. Untuk menelusuri nomor versi, coba:
sumber
sumber
Alex, coba ini: svn menggabungkan [WorkingFolderPath] -r 1944: 1943
sumber
Meskipun saran yang diberikan mungkin berhasil untuk sebagian orang, itu tidak berfungsi untuk kasus saya. Saat melakukan penggabungan, pengguna
rev 1443
yang melakukan pembaruanrev 1445
, masih menyinkronkan semua file yang diubah1444
meskipun sama1443
dari gabungan. Saya membutuhkan pengguna akhir untuk tidak melihat pembaruan sama sekali.Jika Anda ingin menyembunyikan komit sepenuhnya, dimungkinkan dengan membuat cabang baru di revisi yang benar dan kemudian menukar cabang. Satu-satunya hal yang perlu Anda hapus dan tambahkan kembali semua kunci.
Ini bekerja untuk saya, mungkin akan sangat membantu untuk orang lain di luar sana =)
sumber
Ini menyelamatkan hidupku.
Saya mengalami masalah yang sama, setelah kembali juga saya tidak melihat kode lama. Setelah menjalankan perintah di atas saya mendapat kode versi lama yang bersih.
sumber
Saya mencoba di atas, (
svn merge
) dan Anda benar, itu tidak jack. Namuntampaknya berfungsi, tetapi tidak permanen (svn saya hanya menunjukkan revisi lama). Jadi saya harus melakukannya
Dalam kasus khusus saya, target saya adalah
interfaces/AngelInterface.php
. Saya membuat perubahan pada file, melakukan itu, memperbarui komputer build menjalankan kompiler phpdoc dan menemukan perubahan saya adalah buang-buang waktu.svn log interfaces/AngelInterface.php
memperlihatkan perubahan saya sebagai r22060 dan komit sebelumnya pada file itu adalah r22059. Jadi saya bisasvn update -r 22059 interfaces/AngelInterface.php
dan saya berakhir dengan kode seperti di -r22059 lagi. Kemudian :-Atau saya bisa melakukan hal yang sama pada direktori, dengan menentukan
. -R
di tempatinterfaces/AngelInterface.php
di semua di atas.sumber
Jika Anda ingin menghapus komit sepenuhnya dari riwayat, Anda juga dapat melakukan dump dari repo di revisi tertentu, lalu mengimpor dump itu. Secara khusus:
Perintah svnrdump melakukan fungsi yang sama dengan svnadmin dump tetapi bekerja pada repo jarak jauh.
Selanjutnya hanya mengimpor file dump ke repo pilihan Anda. Ini diuji untuk bekerja dengan baik di Beanstalk.
sumber