Saya ingin mengirimkan diff untuk ditinjau, untuk Proyek Sumber Terbuka.
Saya mendapat kode menggunakan SVN (dari terminal, Ubuntu). Dan saya melakukan pengeditan kecil dalam beberapa file. Sekarang hanya ada satu perubahan yang ingin saya kirim. Sisa dari perubahan yang saya buat, adalah untuk debugging, dan tidak lagi diperlukan.
Saya telah menghasilkan diff menggunakan svn di > ~/os/firstdiff.diff
Jadi pertanyaan saya, Bagaimana cara membuang perubahan lokal saya?
Apakah ada cara SVN untuk melakukannya? Jika tidak, saya harus pergi ke setiap file dan menghapus semua suntingan saya. Lalu saya akan menghasilkan diff baru, dan mengirimkannya.
Anda harus mengembalikan semua perubahan menggunakan perintah svn revert :
svn revert foo.c
svn revert --recursive .
sumber
svn revert --recursive .
membantu saya banyak .--recursive
parameter mengembalikan setiap perubahan lokal dan ini adalah pertanyaannya.Untuk membuang perubahan lokal dalam satu file tertentu:
Untuk membuang perubahan lokal dalam satu folder tertentu:
sumber
Sederhana
svn revert
sudah cukup untuk poster aslinya. Namun, sederhanasvn revert
tidak akan dilakukan dalam kasus yang lebih umum di mana AndaSaran @ ErichBSchulz tentang penggunaan
git add -p
sangat masuk akal dan jauh lebih umum berlaku dalam kasus seperti itu. Jawabannya hanya kurang detail. Dengan asumsi direktori Anda saat ini adalah direktori yang ingin Anda buat tambalan yang dapat dibagi, Anda dapat melakukan sesuatu seperti ini:Periksa versi asli dari subversi ke direktori lain (pilih nama direktori yang tidak ada, di sini menggunakan subdirektori
TMP/
).Menggunakan checkout svn yang asli sebagai basis, init repositori git, mengabaikan direktori .svn; komit semua yang ada di svn menuju repositori git sementara Anda
Salin data meta repositori git yang baru disiapkan ke direktori kerja asli Anda; karena direktori checkout subversi murni tidak diperlukan, Anda dapat menyingkirkannya. Direktori kerja Anda sekarang adalah repositori git dan subversi:
Anda sekarang dapat menggunakan yang kuat dan nyaman
git add -p
untuk secara interaktif memilih apa yang ingin Anda bagikan, dan mengkomitnya ke repositori git Anda. Jika Anda perlu menambahkan file ke komit, lakukan jugagit add <file-to-add>
sebelumnyagit commit
Menggunakan komit, siapkan tambalan yang ingin Anda bagikan. Untuk tujuan ini, Anda juga dapat menggunakan
git diff HEAD^..HEAD
, ataugit format-patch
(yang terakhir dapat digunakan untuk langsung menyiapkan email yang akan dikirim berisi tambalan atau banyak tambalan):Untuk menghilangkan data git meta, lakukan saja
rm -rf .git/
. Jika Anda berencana untuk terus meretas dengan direktori kerja asli, Anda dapat terus menggunakangit
untuk mengelola perubahan lokal Anda. Dalam hal ini Anda mungkin akan mendapat manfaat dari investasi belajar cara menggunakangit svn
.Catatan: Jika Anda terbiasa dengan
git
hal ini agak sepele untuk berimprovisasi. Kalau tidak, ini terlihat mungkin agak berantakan. Anda dapat menggeneralisasi pendekatan dengan menulis skrip dari langkah-langkah ini untuk mengimplementasikan "komit interaktif" atau "kreasi tambalan interaktif" untuk svn yang dapat digunakan tanpa pemahaman git.sumber
Anda bisa menggunakannya
Saat menerbitkan diff Anda, jangan lupa untuk memberi tahu revisi yang dengannya Anda berbeda.
Seperti orang lain menjawab, Anda juga bisa menggunakannya
svn revert
dengan hati-hati. Itu tergantung apakah Anda ingin menyimpan perubahan lokal untuk pekerjaan Anda di masa depan atau tidak ...sumber
revert
perubahan saya sepanjang waktu. Jadi saya akan menggunakan cara Anda di masa depan.Pergi ke root repositori itu dan jalankan perintah berikut
sumber
svn revert -R .
mungkin lebih pendekAnda dapat menggunakan perintah commit pada file yang ingin Anda masukkan, dan menggunakan svn revert command untuk membuang perubahan lokal yang tersisa
sumber