"Reset" adalah cara untuk membatalkan perubahan secara lokal. Ketika melakukan, Anda pertama-tama memilih perubahan untuk disertakan dengan " git add " --yang disebut "staging." Dan begitu perubahan dilakukan, maka Anda " git melakukan " mereka.
Untuk mundur dari pementasan atau komit, Anda "mengatur ulang" KEPALA. Di cabang, HEAD adalah variabel git yang menunjuk ke komit terbaru. Jadi jika Anda telah melakukan tetapi belum melakukan komitmen, Anda " set ulang HEAD ." Itu mendukung KEPALA saat ini dengan mengambil perubahan dari panggung. Ini adalah singkatan untuk " git reset - KEPALA dicampur ~ 0. "
Jika Anda sudah berkomitmen, maka HEAD sudah maju, jadi Anda harus mencadangkan ke komitmen sebelumnya. Di sini Anda " reset HEAD ~ 1 " atau " reset HEAD ^ 1 " atau " reset HEAD ~ " atau " reset HEAD ^ " - semua referensi HEAD minus satu.
Mana simbol yang lebih baik, ~ atau ^? Pikirkan ~ tilde sebagai aliran tunggal - ketika setiap komit memiliki orangtua tunggal dan itu hanya serangkaian perubahan secara berurutan, maka Anda dapat merujuk cadangan sungai menggunakan tilde, seperti HEAD ~ 1, HEAD ~ 2, HEAD ~ 3, untuk orang tua, kakek nenek, kakek buyut, dll. (Secara teknis ia menemukan orang tua pertama di generasi sebelumnya).
Ketika ada penggabungan, maka komit memiliki lebih dari satu orangtua. Saat itulah ^ caret ikut bermain - Anda bisa ingat karena itu menunjukkan cabang-cabang berkumpul. Menggunakan tanda sisipan, HEAD ^ 1 akan menjadi orang tua pertama dan HEAD ^ 2 akan menjadi orang tua kedua dari satu komit - ibu dan ayah, misalnya.
Jadi jika Anda hanya akan mengembalikan satu hop pada komit orang tua tunggal, maka HEAD ~ dan HEAD ^ adalah sama - Anda dapat menggunakan salah satunya.
Selain itu, reset dapat berupa --soft , --mixed , atau --hard . Reset lunak hanya memundurkan komit - me-reset HEAD, tetapi tidak memeriksa file dari komit sebelumnya, sehingga semua perubahan dalam direktori kerja dipertahankan. Dan --soft reset bahkan tidak menghapus panggung (juga dikenal sebagai indeks ), jadi semua file yang dipentaskan akan tetap di atas panggung.
Sebuah --Dicampur ulang (default) juga tidak memeriksa file dari sebelumnya komit, sehingga semua perubahan yang diawetkan, tapi panggung dibersihkan. Itu sebabnya " git reset HEAD " yang sederhana akan membersihkan panggung.
Sebuah --hard ulang ulang HEAD, dan membersihkan panggung, tetapi juga memeriksa semua file dari sebelumnya komit dan sehingga menimpa perubahan.
Jika Anda telah mendorong komit ke repositori jarak jauh, maka reset tidak berfungsi dengan baik. Anda dapat mereset secara lokal, tetapi ketika Anda mencoba untuk mendorong ke remote, git akan melihat bahwa HEAD lokal Anda berada di belakang HEAD di cabang jauh dan akan menolak untuk mendorong. Anda mungkin bisa memaksakan dorongan, tetapi git benar-benar tidak suka melakukan itu.
Sebagai alternatif, Anda dapat menyimpan perubahan Anda jika Anda ingin menyimpannya, memeriksa komit sebelumnya, menghapus simpanan perubahan, tahapan mereka, membuat komit baru, dan kemudian mendorong itu.