Metode REVERSIBLE untuk Membuang Semua Perubahan:
Saya menemukan pertanyaan ini setelah setelah melakukan penggabungan dan melupakan untuk checkout mengembangkan segera setelah itu. Anda dapat menebaknya: Saya mulai memodifikasi beberapa file langsung di master . D'Oh! Karena situasi saya hampir tidak unik (kita semua pernah melakukannya, bukan; ->), saya akan menawarkan cara reversibel yang biasa saya gunakan untuk membuang semua perubahan agar master terlihat seperti berkembang lagi.
Setelah melakukan a git diff
untuk melihat file apa yang diubah dan menilai ruang lingkup kesalahan saya, saya mengeksekusi:
git stash
git stash clear
Setelah terlebih dahulu menyembunyikan semua perubahan, selanjutnya mereka dibersihkan. Semua perubahan yang dibuat pada file karena kesalahan pada master hilang dan paritas dipulihkan.
Katakanlah sekarang saya ingin memulihkan perubahan itu. Aku bisa melakukan ini. Langkah pertama adalah menemukan hash dari simpanan yang baru saja saya bersihkan / jatuhkan:
git fsck --no-reflog | awk '/dangling commit/ {print $3}'
Setelah mempelajari hash, saya berhasil memulihkan perubahan yang tidak dilakukan dengan:
git stash apply hash-of-cleared-stash
Saya tidak benar-benar ingin memulihkan perubahan itu, hanya ingin memvalidasi saya bisa mendapatkannya kembali, jadi saya menghapusnya lagi.
Pilihan lainnya adalah menerapkan simpanan ke cabang yang berbeda , daripada menghapus perubahan. Jadi dalam hal menghapus perubahan yang dibuat dari bekerja di cabang yang salah, stash
memberi Anda banyak fleksibilitas untuk memulihkan dari boo-boo Anda.
Anyhoo, jika Anda menginginkan cara yang dapat dibalik untuk menghapus perubahan pada cabang, hal tersebut di atas adalah cara yang kurang berbahaya dalam kasus penggunaan ini.
git reset --hard HEAD^