Perbedaan Antara Git Reset –soft, –mixed, dan –hard
Git adalah salah satu Version Control Systems (VCS) terpopuler yang saat ini digunakan, dan menyediakan berbagai perintah untuk mengelola dan memanipulasi riwayat basis kode Anda. Memahami perintah ini dan seluk-beluknya dapat secara signifikan meningkatkan efisiensi Anda dan cara Anda bekerja dengan basis kode. Salah satu perintah tersebut adalah git reset, yang dilengkapi dengan beberapa opsi yang dapat mengubah perilakunya secara signifikan: --soft, --mixed, dan --hard.
AdvertisementPengantar Git Reset
Perintah git reset adalah alat ampuh yang digunakan untuk membatalkan perubahan dalam Repositori Git. Ini pada dasarnya memungkinkan Anda untuk memindahkan pointer HEAD ke komit tertentu, sehingga mengubah apa yang dianggap sebagai komit "terbaru" di repositori lokal Anda. Tetapi perintah tersebut dapat memengaruhi direktori kerja Anda, area pementasan (juga dikenal sebagai indeks), dan riwayat komit Anda dengan cara yang berbeda tergantung pada apakah flag --soft, --mixed, atau --hard digunakan.
Git Reset -- soft
Saat menggunakan `git reset --soft `, Git memindahkan penunjuk HEAD ke komit yang ditentukan, tetapi membiarkan area pementasan dan direktori kerja tidak berubah. Ini berarti semua perubahan dari komit setelah komit yang ditentukan akan disimpan di area staging, siap untuk dikomit lagi. Mari pertimbangkan sebuah contoh. Misalkan Anda memiliki riwayat komit berikut:
A -- B -- C (HEAD -> main)1A--B--C(HEAD->main)
Jika Anda menjalankan `git reset --soft B`, riwayat komit Anda akan terlihat seperti ini:
A -- B (HEAD -> main)1A--B(HEAD->main)
Namun, perubahan yang diperkenalkan di komit C akan dibiarkan di area pementasan Anda, seolah-olah siap untuk dilakukan lagi . Opsi ini sangat berguna jika Anda ingin mengulang pesan komit dari komit C atau memasukkannya ke dalam komit B.
Pahami “git reset – soft”Git Reset --mixed
`git reset --mixed ` adalah opsi default untuk git reset. Ini memindahkan pointer HEAD ke komit yang ditentukan, seperti --soft. Namun, itu juga me-reset area pementasan untuk mencocokkan komit ini, tetapi membiarkan direktori kerja tidak berubah.
Kembali ke contoh kami sebelumnya, jika Anda menjalankan `git reset --mixed B` setelah membuat komit C, Anda akan menemukan sendiri perubahannya diperkenalkan di komit C hadir di direktori kerja Anda tetapi tidak di area pementasan Anda. Dengan kata lain, perubahan tersebut akan muncul sebagai perubahan yang tidak terlacak. Ini dapat berguna jika Anda ingin melakukan perubahan tertentu atau memecahnya menjadi beberapa commit.
Pahami “ git reset –mixed”Git Reset --hard
Perintah `git reset --hard ` adalah opsi yang paling merusak. Ini memindahkan penunjuk HEAD, mengatur ulang area pementasan, dan direktori kerja agar sesuai dengan komit yang ditentukan. Pada dasarnya, itu benar-benar membuang semua komit setelah komit yang ditentukan.
Jika Anda mengikuti contoh kami yang sedang berlangsung, `git reset --hard B` akan sepenuhnya membuang komit C, termasuk entri komitnya dan perubahan pada file. Berhati-hatilah saat menggunakan opsi ini, karena Anda akan kehilangan semua perubahan yang belum dikomit di direktori kerja Anda. Perintah ini biasanya digunakan ketika Anda ingin sepenuhnya membuang komit dan perubahan terbaru.
Pahami “git reset –hard” Membungkus
Singkatnya, berikut adalah deskripsi singkat tentang apa yang dilakukan masing-masing flag:
git reset --soft : Memindahkan HEAD ke , mempertahankan area pementasan dan direktori kerja apa adanya. git reset --mixed (default): Memindahkan HEAD ke , mengatur ulang area pementasan, tetapi tetap mempertahankan direktori kerja apa adanya. git reset --hard : Memindahkan HEAD ke , dan mengatur ulang area pementasan dan direktori kerja.
Perintah git reset, dengan flag --soft, --mixed, dan --hard, adalah alat yang ampuh untuk memanipulasi riwayat komit dalam repositori Git. Namun, kekuatannya memiliki potensi kehancuran, jadi penting untuk memahami bendera ini sebelum menggunakannya. Selalu ingat untuk menyimpan pekerjaan Anda di tempat lain atau pastikan tentang perintah Anda sebelum menjalankan reset git, terutama dengan flag --hard.
Referensi tecadmin.com