Git Reset --hard
Terakhir diperbarui
git reset --hard memindahkan branch-mu ke commit tujuan dan memaksa staging area serta working tree sama persis dengan commit itu, sambil membuang setiap perubahan yang belum di-commit. Ini bentuk git reset yang paling merusak, jadi pastikan kamu tidak membutuhkan pekerjaanmu saat ini sebelum menjalankannya.
Tidak sengaja kehilangan commit karena reset? Hard reset biasanya masih bisa dipulihkan lewat git reflog. Coba perintah-perintah ini dengan aman di playground terminal: shell sungguhan di browsermu.
Sintaks
| Perintah | Fungsinya |
|---|---|
git reset --hard | Membuang semua perubahan yang belum di-commit (tetap di HEAD) |
git reset --hard HEAD~1 | Membuang commit terakhir beserta perubahannya |
git reset --hard <hash> | Memaksa branch kembali ke commit tertentu |
git reset --hard origin/main | Membuat branch lokal sama persis dengan remote |
Memulihkan hard reset
Pekerjaan yang sudah di-commit lalu terhapus oleh reset biasanya masih bisa dipulihkan.
| Langkah | Perintah | Hasil |
|---|---|---|
| 1 | git reflog | Menampilkan posisi HEAD sebelumnya, lengkap dengan hash |
| 2 | git reset --hard <hash> | Kembali ke commit sebelum reset |
Pertanyaan seputar git reset --hard
Apa sebenarnya yang dilakukan git reset --hard?
--soft (yang membiarkan perubahan tetap di-stage) dan --mixed (yang membiarkannya tidak di-stage), --hard adalah satu-satunya mode yang membuang perubahan.Bagaimana cara membuang semua perubahan lokal?
git reset --hard tanpa commit untuk mengembalikan working tree ke commit terakhir dan menghapus editan yang belum di-commit. Untuk juga membersihkan file untracked yang tidak disentuh reset, lanjutkan dengan git clean -fd.Bagaimana cara reset branch agar sama dengan remote?
git fetch lalu git reset --hard origin/main (ganti dengan branch-mu). Ini memaksa branch lokalmu sama persis dengan remote, membuang commit dan perubahan lokal yang menyimpang darinya. Berguna saat branch lokalmu sudah kacau dan kamu hanya ingin versi dari remote.Bisakah git reset --hard dibatalkan?
git reflog untuk menemukan commit yang ditunjuk branch-mu sebelum reset, lalu git reset --hard <hash> untuk kembali ke sana. Perubahan yang belum pernah di-commit (hanya ada di working tree) tidak bisa dipulihkan, jadi gunakan --hard dengan hati-hati.Bisakah saya berlatih ini secara online?
git reset --hard di shell sungguhan di browsermu, tanpa perlu instalasi. Kursus Git interaktif gratis dari Coddy juga membahas reset dan cara membatalkan perubahan langkah demi langkah.