Cara sebaliknya berlaku simpanan?
Saya memiliki sebuah patch kecil yang disimpan di my git simpanan. I've diterapkan untuk kerja saya copy menggunakan git simpanan menerapkan. Sekarang, aku'd ingin kembali perubahan tersebut dengan reverse menerapkan patch (semacam seperti apa git
kembali` akan dilakukan, tetapi terhadap simpanan).
Tidak ada yang tahu bagaimana untuk melakukan hal ini?
Klarifikasi: Ada perubahan lain dalam kerja saya copy. Saya kasus tertentu sulit untuk menggambarkan, tapi anda bisa bayangkan beberapa debugging atau eksperimental kode yang's dalam simpanan. Sekarang ini's dicampur dalam kerja saya copy dengan beberapa perubahan lainnya dan I'd ingin melihat efek dengan dan tanpa perubahan dari simpanan.
Itu doesn't terlihat seperti simpanan mendukung ini saat ini, tapi git simpanan menerapkan --terbalik
akan menjadi fitur yang bagus.
Menurut git-menyimpan halaman manual, "stash adalah direpresentasikan sebagai komit dan pohon catatan keadaan direktori kerja, dan orang tua adalah melakukan di
KEPALA
ketika simpanan diciptakan," dangit simpanan show-p
memberi kita "perubahan yang tercatat dalam simpanan sebagai perbedaan antara disembunyikan negara dan asli orang tua.Untuk menjaga perubahan-perubahan yang lain utuh, menggunakan git simpanan show-p | patch-reverse` sebagai berikut:
Edit:
Cahaya perbaikan untuk hal ini adalah dengan menggunakan git
apply
di tempat patch:Atau, anda juga dapat menggunakan git berlaku-R
sebagai singkatan untuk
git berlaku-reverse`.I've telah menemukan ini benar-benar berguna akhir-akhir ini...
git
simpanan
[save]
mengambil direktori kerja anda negara, dan indeks negara, dan stash mereka pergi, pengaturan indeks dan area kerja untukKEPALA
versi.git simpanan menerapkan
membawa kembali perubahan-perubahan tersebut, sehinggagit reset --hard
akan menghapusnya lagi.git simpanan pop
membawa kembali perubahan-perubahan dan menghilangkan beberapa disembunyikan perubahan, sehinggagit simpanan [save]
akan kembali ke sebelumnya (pre-pop) negara dalam kasus ini.akan menghapus setiap non-melakukan perubahan.
Langsung cut n paste dari git halaman It's jelas worded dan bahkan termasuk alias;
Un-menerapkan Simpanan Dalam beberapa kasus penggunaan skenario anda mungkin ingin menerapkan disembunyikan perubahan, melakukan beberapa pekerjaan, tetapi kemudian un-menerapkan perubahan-perubahan yang berasal dari simpanan. Git tidak memberikan seperti simpanan unapply perintah, tapi itu adalah mungkin untuk mencapai efek dengan hanya mengambil patch yang berhubungan dengan simpanan dan menerapkannya secara terbalik:
Sekali lagi, jika anda tidak menentukan simpanan, Git mengasumsikan terbaru stash:
Anda mungkin ingin membuat alias dan efektif menambah simpanan-unapply perintah untuk Git. Misalnya:
Ini adalah lama berakhir karena, tapi jika saya menafsirkan masalah dengan benar saya telah menemukan solusi yang sederhana, catatan, ini adalah penjelasan saya sendiri terminologi:
git simpanan [save]
akan menyimpan berbagai perubahan saat ini dan mengatur arus cabang ke "negara"git menyimpan daftar
memberikan sesuatu seperti:simpanan@{0}: Pada mengembangkan: disimpan pengujian-barang
git menerapkan simpanan@{0}
akan mengatur arus cabang sebelumsimpanan [save]
git checkout .
Akan mengatur arus cabang setelahsimpanan [save]
Kode yang disimpan dalam simpanan tidak hilang, hal ini dapat ditemukan oleh
git menerapkan simpanan@{0}
lagi.Anywhay, ini bekerja untuk saya!
Selain @Greg Daging jawaban, dalam kasus biner file yang ditambahkan ke indeks dan merupakan bagian dari simpanan menggunakan
dapat mengakibatkan
Hal ini selain untuk jawaban atas tetapi menambahkan pencarian untuk git simpanan berdasarkan pesan sebagai simpanan nomor dapat berubah ketika baru stash diselamatkan. Saya telah menulis beberapa bash fungsi:
$ git simpanan simpan "saya stash"
$ menerapkan "saya stash"
$ hapus "saya stash"
Terlepas dari apa yang orang lain telah disebutkan, cara termudah adalah pertama melakukan
dan kemudian checkout semua perubahan lokal