Menu
CoddyTech

Git Reset

Terakhir diperbarui

git reset memindahkan branch saat ini ke commit lain dan, tergantung mode-nya, memperbarui staging area (index) dan working tree agar sesuai. Ketiga mode hanya berbeda dalam seberapa jauh pembaruan itu berlaku: --soft memindahkan branch lalu berhenti, --mixed (default) juga mengembalikan staging area, dan --hard juga menimpa file kerjamu.

Karena --hard membuang pekerjaan yang belum di-commit, pastikan kamu tahu mode mana yang kamu inginkan sebelum menjalankannya. Untuk commit yang sudah di-push, lebih baik pakai git revert. Coba perintah-perintah ini dengan aman di playground terminal: shell sungguhan di browsermu.

git reset memindahkan HEAD mundur ke commit sebelumnya; commit sesudahnya keluar dari branch tetapi masih bisa dipulihkan lewat reflog.

Tiga mode

ModeMemindahkan branchReset stagingReset working tree
--softYaTidakTidak
--mixed (default)YaYaTidak
--hardYaYaYa

Sintaks

PerintahFungsinya
git reset --soft HEAD~1Membatalkan commit terakhir, perubahan tetap di-stage
git reset HEAD~1Membatalkan commit terakhir, perubahan tidak di-stage
git reset --hard HEAD~1Membatalkan commit terakhir, perubahan dibuang
git reset <file>Mengeluarkan file dari staging (perubahannya tetap ada)
git reset --hard origin/mainMemaksa branch lokal sama dengan remote

Kasus umum

TujuanPerintah
Keluarkan semuanya dari staginggit reset
Keluarkan satu file dari staginggit reset README.md
Mundur 3 commit, pekerjaan tetap adagit reset --soft HEAD~3
Buang semua perubahan lokal sejak sebuah commitgit reset --hard <hash>

Pertanyaan seputar git reset

Apa perbedaan --soft, --mixed, dan --hard?
Ketiganya memindahkan penunjuk branch ke commit tujuan; bedanya ada pada apa lagi yang mereka sentuh. --soft tidak mengubah apa pun selain itu, jadi perubahanmu tetap di-stage. --mixed (default) juga mengosongkan staging area, jadi perubahan tidak lagi di-stage tapi tetap ada di file-mu. --hard juga menimpa working tree agar sama dengan commit tujuan, sehingga perubahan yang belum di-commit dibuang.
Bagaimana cara mengeluarkan file dari staging dengan git reset?
Jalankan git reset <file> (misalnya git reset README.md), atau git reset tanpa path untuk mengeluarkan semuanya. Ini mengeluarkan file dari staging area tapi membiarkan editanmu tetap di working tree. Di Git versi baru kamu juga bisa memakai git restore --staged <file>, yang melakukan hal yang sama dengan lebih eksplisit.
Apakah git reset --hard bisa dibatalkan?
Tidak dari working tree: --hard membuang permanen perubahan yang belum di-commit. Namun, pekerjaan yang sudah di-commit lalu terhapus oleh reset biasanya masih bisa dipulihkan: jalankan git reflog untuk menemukan hash commit-nya, lalu git reset --hard <hash> (atau buat branch di commit itu). Perubahan yang tidak pernah di-stage atau di-commit tidak bisa dipulihkan, jadi gunakan --hard dengan hati-hati.
Apa bedanya git reset dan git revert?
git reset menulis ulang riwayat dengan memindahkan branch mundur, tidak masalah untuk commit lokal tapi berbahaya untuk commit yang sudah kamu push. git revert membiarkan riwayat utuh dan menambahkan commit baru yang membatalkan commit sebelumnya, pilihan yang aman untuk branch bersama.
Apa fungsi git reset --soft HEAD~1?
Perintah ini membatalkan commit terakhir tapi membiarkan semua yang diubah commit itu tetap di-stage. HEAD~1 artinya satu commit sebelum commit saat ini, jadi branch mundur satu langkah sementara staging area dan working tree tetap seperti semula. Ini cara tercepat untuk mengulang commit: perbaiki file atau pesannya, lalu commit lagi. Lihat git undo last commit untuk pilihan lainnya.
Apa arti HEAD~1?
HEAD adalah commit tempat kamu berada, dan ~1 artinya parent pertamanya, satu commit ke belakang. HEAD~2 berarti dua commit ke belakang, dan seterusnya. Untuk commit biasa, HEAD^ sama dengan HEAD~1.
Bisakah saya berlatih ini secara online?
Bisa. Buka playground terminal untuk menjalankan git reset di shell sungguhan di browsermu, tanpa perlu instalasi. Kursus Git interaktif gratis dari Coddy juga membahas reset dan cara membatalkan perubahan langkah demi langkah.
Ilustrasi bahasa pemrograman di Coddy

Belajar Git bersama Coddy

Mulai