Lewati ke konten utama

Tutorial Git Reset dan Revert untuk Pemula

Pelajari cara menggunakan git reset dan revert untuk mengelola riwayat proyek Anda. Berlatih dengan contoh terperinci menggunakan reset soft, mixed, dan hard. Pahami perbedaan antara kedua perintah tersebut.
Diperbarui 28 Sep 2026  · 8 mnt Baca

Jelajahi bersama AI

ChatGPTClaudePerplexity

Git awalnya dibuat sebagai alat untuk pengembang perangkat lunak, tetapi kini menjadi standar bagi siapa pun yang bekerja dengan kode. Saat ini, data scientist, data engineer, dan machine learning engineer juga menerapkan praktik terbaik ini.

Dalam tutorial ini, saya membahas perbedaan utama antara git reset dan git revert, dua perintah Git untuk membatalkan perubahan. Saya uraikan contoh praktis tiap mode, dari menginisialisasi proyek hingga membatalkan commit tertentu.

Ringkasnya

  • git reset memundurkan pointer branch, menghapus commit dari riwayat. Gunakan untuk merapikan lokal sebelum melakukan push.

  • git reset --soft mempertahankan perubahan tetap staged, --mixed (bawaan) membatalkan staging, dan --hard membuangnya sepenuhnya.

  • git revert membuat commit baru yang membatalkan commit sebelumnya. Gunakan untuk perubahan yang sudah di-push ke branch bersama.

  • Jangan pernah gunakan git reset pada branch bersama. Jika sesuatu sudah di-push, gunakan git revert sebagai gantinya.

  • Jika Anda tidak sengaja menjalankan git reset --hard, periksa git reflog untuk memulihkan commit yang hilang.

Apa itu Git?

Git adalah alat pengendalian versi open-source yang dibuat pada 2005 oleh Linus Torvalds. Alat ini terutama digunakan untuk melacak perubahan pada berkas proyek secara efisien sehingga anggota proyek memiliki catatan semua perubahan dan dapat menggabungkan perubahan tanpa kehilangan informasi penting. Kursus kami

Selain itu, Introduction to GitHub Concepts membahas fitur-fitur utama GitHub, cara menavigasi antarmuka, dan menjalankan tugas kolaboratif sehari-hari dengan sukses.

Git revert dan Git reset adalah dua perintah di Git untuk membatalkan perubahan pada kode dan riwayat proyek, namun dengan cara yang berbeda. Sebelum masuk ke prosesnya, mari buat proyek Git.

Buat proyek Git

Berikut instruksi untuk membuat proyek git dan menginisialisasinya dengan beberapa berkas:

mkdir git_revert_reset
cd git_revert_reset
git init .
  • mkdir git_revert_reset membuat folder bernama git_revert_reset. 

  • cd git_revert_reset berpindah ke folder tersebut. 

  • git init . menginisialisasi folder sebagai repositori git.

Menganggap ini sebagai proyek data science, kita dapat membuat berkas berikut untuk akuisisi data, prapemrosesan data, dan pelatihan model menggunakan perintah touch ini:

touch data_acquisition.py data_preprocessing.py model_training.py

Berikut adalah isi akhir folder proyek.

git_revert_reset
      |---------- data_acquisition.py
      |---------- data_preprocessing.py
      |---------- model_training.py

Git Reset 

Diagram of Before and After Git Reset

Diagram Git Reset (Sumber)

Perintah git reset digunakan untuk membatalkan perubahan di working directory Anda dan kembali ke commit tertentu sambil mengabaikan semua commit setelahnya. 

Misalnya, bayangkan Anda membuat sepuluh commit. Menggunakan git reset pada commit pertama akan menghapus sembilan commit berikutnya, membawa Anda kembali ke tahap commit pertama.

Sebelum menggunakan git reset, penting untuk mempertimbangkan jenis perubahan yang akan Anda lakukan; jika tidak, Anda bisa menimbulkan lebih banyak masalah daripada manfaat. 

Anda dapat menggunakan beberapa opsi bersama git reset, namun ini yang utama. Masing-masing digunakan tergantung situasi: git reset --soft, git reset --mixed, dan git reset --hard

git reset --soft

Opsi --soft bertujuan mengubah referensi HEAD (lokasi commit terakhir di mesin lokal Anda) ke commit tertentu. Misalnya, jika kita sadar lupa menambahkan sebuah berkas ke commit, kita dapat mundur menggunakan --soft dengan format berikut:

  • git reset --soft HEAD~n untuk mundur ke commit dengan referensi tertentu (n). git reset --soft HEAD~1 kembali ke commit terakhir.

  • git reset --soft <commit ID> memundurkan ke head dengan <commit ID> tersebut.

Mari lihat beberapa contohnya.

git add data_acquisition.py data_preprocessing.py

git commit -m "added data acquisition and preprocessing scripts"

Ini hasil dari perintah sebelumnya. 

[master (root-commit) faf864e] added data acquisition and preprocessing scripts
2 files changed, 0 insertions(+), 0 deletions(-)
create mode 100644 data_acquisition.py
create mode 100644 data_preprocessing.py

Kita dapat memeriksa status commit sebagai berikut:

git status

On branch master
Untracked files:
(use "git add <file>..." to include in what will be committed)
model_training.py

nothing added to commit but untracked files present (use "git add" to track)

Namun, kita lupa menambahkan skrip model_training.py ke commit.

Karena commit terakhir berada di HEAD, kita bisa memperbaikinya dengan menjalankan tiga pernyataan berikut. 

  • Batalkan commit terakhir sambil menjaga perubahan tetap staged menggunakan git reset --soft HEAD~1.

  • Tambahkan berkas yang terlupa dengan git add. 

  • Selesaikan perubahan dengan commit akhir git commit.

git reset --soft HEAD~1

git add model_training.py

git commit -m "added all the python scripts"

Hasil berikut membuat git reset ke master setelah semua langkah sebelumnya: 

[master (root-commit) faf864e] added all the python scripts
3 files changed, 0 insertions(+), 0 deletions(-)
create mode 100644 data_acquisition.py
create mode 100644 data_preprocessing.py
create mode 100644 model_training.py

Untuk panduan lebih mendalam tentang soft reset, lihat Git Reset Soft: Complete Guide. Jika Anda hanya perlu memperbaiki pesan commit terakhir atau menambahkan berkas yang terlupa, git commit --amend sering kali lebih cepat daripada melakukan reset.

git reset --mixed

Ini adalah argumen bawaan untuk git reset. Menjalankan perintah ini berdampak pada dua hal: (1) membatalkan semua commit dan (2) membatalkan staging-nya. Bayangkan kita tanpa sengaja menambahkan berkas model_training.py, dan ingin menghapusnya karena pelatihan model belum selesai. Berikut cara melakukannya: 

  • Batalkan staging berkas-berkas yang ada di commit dengan git reset HEAD
  • Hanya tambahkan berkas yang kita perlukan untuk commit
git reset HEAD

git status

On branch master
Untracked files:
(use "git add <file>..." to include in what will be committed)
model_training.py
data_acquisition.py
data_preprocessing.py

nothing added to commit but untracked files present (use "git add" to track)

Sekarang kita bisa menambahkan hanya dua berkas terakhir untuk di-commit dan membuat commit.

git add data_acquisition.py data_preprocessing.py

git commit -m "Removed the model_training.py from the commit"

git reset --hard

Opsi ini berpotensi berbahaya. Jadi, berhati-hatilah saat menggunakannya! 

Pada dasarnya, saat menggunakan hard reset pada commit tertentu, perintah ini memaksa HEAD kembali ke commit tersebut dan menghapus semua hal setelahnya.

Sebelum menjalankan hard reset, mari lihat isi folder.

ls
data_acquisition.py data_preprocessing.py model_training.py

git reset --hard
HEAD is now at 97159bc added data acquisition and preprocessing scripts

Sekarang mari periksa isi folder:

ls
data_acquisition.py data_preprocessing.py

Kita melihat bahwa berkas yang tidak terlacak model_training.py terhapus. Sekali lagi, pastikan Anda memahami apa yang Anda lakukan dengan pernyataan reset karena konsekuensinya bisa fatal!

Jika Anda tak sengaja menjalankan hard reset, git reflog adalah jaring pengaman Anda. Git menyimpan log semua perubahan referensi sekitar 30 hari, sehingga Anda sering dapat memulihkan commit yang "hilang" dengan menjalankan git reflog lalu git reset --hard HEAD@{n} untuk kembali ke keadaan sebelum reset. Perhatikan bahwa perubahan yang belum di-commit atau belum di-staged tidak dapat dipulihkan dengan cara ini.

Git Revert

Diagram of Revert - Before and After

Sebelum dan Sesudah Revert (Sumber)

Git revert mirip dengan git reset, tetapi pendekatannya sedikit berbeda. Alih-alih menghapus semua commit di jalurnya, revert HANYA membatalkan satu commit dengan membawa Anda kembali ke berkas yang distage sebelum commit tersebut.

Jadi, alih-alih menghapus commit, git revert membalik perubahan yang diperkenalkan oleh commit asli dengan membuat commit baru berisi konten kebalikannya. Ini cara yang aman untuk membatalkan commit karena tidak membuat Anda kehilangan riwayat. 

Penting untuk diketahui bahwa revert tidak akan berdampak kecuali hash atau referensi commit ditentukan. 

Mari telusuri beberapa opsi git revert yang umum.

git revert --no-edit <commit ID>

Opsi --no-edit memungkinkan pengguna untuk tidak mengubah pesan yang digunakan untuk commit yang ingin Anda batalkan, dan ini akan membuat berkas hasil git revert kembali ke branch master.

Untuk mengilustrasikan skenario ini, mari buat dua berkas baru untuk ditambahkan. 

touch model_monitoring.py data_monitoring.py

Setelah membuat berkas-berkas tersebut, kita perlu menambahkannya ke area staging versi yang dimodifikasi.

git add model_monitoring.py

Sebelum lanjut, mari lihat statusnya dengan menjalankan perintah berikut.

git status
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file:   data_monitoring.py
new file:   model_monitoring.py


Kita dapat melihat bahwa kedua berkas telah ditambahkan, sekarang kita bisa melakukan commit perubahan.

git commit -m "Added the monitoring script files"
[master (root-commit) eae84e7] Added the monitoring script files
2 files changed, 0 insertions(+), 0 deletions(-)
create mode 100644 data_monitoring.py
create mode 100644 model_monitoring.py


Selanjutnya, hash commit dapat dihasilkan melalui perintah berikut. Ini bermanfaat saat ingin melakukan aksi pada commit tertentu ini. 

git reflog
eae84e7 (HEAD -> master) HEAD@{0}: commit (initial): Added the monitoring script files

Sekarang, bayangkan commit sebelumnya tidak disengaja, dan kita ingin menyingkirkannya.

git revert --no-edit eae84e7

[master c61ef6b] Revert "Added the monitoring script files"
Date: Sat Nov 12 20:14:17 2022 -0600
2 files changed, 0 insertions(+), 0 deletions(-)
delete mode 100644 data_monitoring.py
delete mode 100644 model_monitoring.py

Mari lihat log commit:

git log

commit c61ef6b4e86f41f47c8c77de3b5fca3945a7c075 (HEAD -> master)
Author: Zoumana Keita <keitnekozou@gmail.com>
Date:   Sat Nov 12 20:14:17 2022 -0600

  Revert "Added the monitoring script files"
 
  This reverts commit eae84e7669af733ee6c1b854f2fcd9acfea9d4a3.

commit eae84e7669af733ee6c1b854f2fcd9acfea9d4a3
Author: Zoumana Keita <keitnekozou@gmail.com>
Date:   Sat Nov 12 20:05:57 2022 -0600

  Added the monitoring script files

Dari log, kita dapat melihat bahwa commit baru dibuat dengan ID c61ef6b4e86f41f47c8c77de3b5fca3945a7c075 untuk membalik commit asli dengan ID eae84e7669af733ee6c1b854f2fcd9acfea9d4a3. 

Pada contoh ini, karena kita hanya memiliki satu commit, kita bisa menggunakan git revert HEAD yang efeknya sama. Untuk lebih banyak contoh, lihat panduan membatalkan commit terakhir kami.

git revert <commit hash>

Ini hanya akan menghapus perubahan yang terkait dengan commit hash tersebut dan tidak memengaruhi commit lain.

Menurut Anda, git revert yang mana yang akan berdampak, dengan mempertimbangkan ID yang dihasilkan sebelumnya? 

Jika jawaban Anda adalah c61ef6b4e86f41f47c8c77de3b5fca3945a7c075 maka benar. Menggunakan eae84e7669af733ee6c1b854f2fcd9acfea9d4a3 tidak akan berdampak, karena sudah digantikan oleh commit baru. 

Mari lihat apa yang terjadi saat mencoba melakukan revert.

git revert c61ef6b4e86f41f47c8c77de3b5fca3945a7c075

[master aaead40] Revert "Revert "Added the monitoring script files""

 2 files changed, 0 insertions(+), 0 deletions(-)

 create mode 100644 data_monitoring.py

 create mode 100644 model_monitoring.py

Seperti yang Anda lihat, dua berkas yang awalnya dibuat dan di-commit telah kembali!

git revert --no-commit <commit ID>

Tujuan penggunaan opsi --no-commit atau -n adalah mencegah git secara otomatis melakukan commit hasil revert. Ini bermanfaat jika Anda ingin meninjau perubahan yang dilakukan pernyataan revert sebelum meng-commit-nya.

Pertimbangkan contoh berikut: 

git revert --no-commit c61ef6b4e86f41f47c8c77de3b5fca3945a7c075

Ini akan membalik perubahan yang dibuat oleh commit dengan ID c61ef6b4e86f41f47c8c77de3b5fca3945a7c075 namun tidak otomatis membuat commit baru untuk mencatat revert tersebut. Sebaliknya, perubahan kebalikannya akan di-staging sehingga Anda dapat meninjaunya dan memutuskan apakah akan meng-commit revert secara manual.

Git Revert vs. Reset

git reset dan git revert sama-sama membatalkan perubahan, tetapi cara kerjanya berbeda dan cocok untuk situasi yang berbeda.

Kriteria git reset git revert
Cara kerja Memundurkan pointer branch, membuang commit dari riwayat Membuat commit baru yang membalik perubahan commit sebelumnya
Riwayat commit Menulis ulang riwayat (commit dihapus) Mempertahankan riwayat penuh (menambahkan commit revert baru)
Aman untuk branch bersama? Tidak (kolaborator akan mengalami konflik jika mereka sudah menarik commit yang dihapus) Ya (riwayat tetap konsisten bagi semua kolaborator)
Cakupan Dapat membatalkan beberapa commit sekaligus Membatalkan satu commit dalam satu waktu (gunakan --no-commit untuk membundel)
Kasus penggunaan terbaik Membersihkan branch lokal atau privat sebelum push Membatalkan perubahan yang sudah di-push ke remote
Tingkat risiko Tinggi dengan --hard (secara permanen menghapus pekerjaan yang belum di-commit) Rendah (tidak ada data yang hilang)

Aturan praktisnya: gunakan git reset untuk merapikan riwayat lokal yang belum di-push, dan git revert untuk dengan aman membatalkan apa pun yang mungkin sudah ditarik orang lain. Untuk detail tentang membatalkan merge commit, lihat panduan Git Revert Merge Commit kami.

Kesimpulan

Poin utama: gunakan git reset untuk merapikan riwayat lokal yang belum Anda push, dan git revert untuk dengan aman membatalkan perubahan pada branch bersama. Berhati-hatilah khususnya dengan git reset --hard, karena perintah ini secara permanen menghapus perubahan yang belum di-commit dari working directory Anda. 

Untuk terus membangun keterampilan Git Anda, lihat tutorial DataCamp terkait berikut:

FAQ Git Reset dan Revert

Apa perbedaan antara git reset dan git revert?

git reset digunakan untuk membatalkan commit di repositori lokal dengan memindahkan pointer branch ke commit sebelumnya, sehingga menghapus commit apa pun yang dibuat setelah titik itu. git revert, di sisi lain, digunakan untuk membatalkan perubahan yang telah di-commit ke repositori dengan membuat commit baru yang membatalkan perubahan yang dibuat oleh commit tertentu.

Haruskah Anda menggunakan git reset hard?

Berhati-hatilah saat menggunakan git reset hard karena dapat benar-benar menghancurkan perubahan apa pun dan menghapusnya dari direktori lokal. Sebelum menggunakannya, pastikan 100% Anda tahu apa yang Anda lakukan.

Kapan saya harus menggunakan git reset?

git reset berguna saat Anda ingin membatalkan commit yang belum di-push ke repositori remote. Ini dapat digunakan untuk menghapus commit yang berisi kesalahan atau yang sudah tidak diperlukan.

Penting untuk dicatat bahwa git reset adalah operasi lokal dan tidak memengaruhi repositori remote. Jika Anda sudah melakukan push commit yang ingin dibatalkan, sebaiknya gunakan git revert.

Kapan saya harus menggunakan git revert?

git revert berguna saat Anda ingin membatalkan commit yang sudah di-push ke repositori remote. Ini adalah opsi yang aman karena tidak menghancurkan commit mana pun dan meninggalkan catatan yang jelas tentang perubahan yang dibuat di repositori.

Penting untuk dicatat bahwa git revert hanya dapat membatalkan commit yang belum digabungkan ke branch lain. Jika Anda ingin membatalkan commit yang merupakan bagian dari branch yang sudah di-merge, Anda harus menggunakan git reset atau metode lain untuk menghapus commit tersebut.

Apa itu git reset?

git reset digunakan untuk membatalkan perubahan pada riwayat commit atau working directory Anda. Perintah ini memungkinkan Anda mengatur ulang HEAD ke commit tertentu, dan secara opsional memodifikasi indeks (staging area) dan working directory. 

Apa perbedaan --soft, --mixed, dan --hard dalam git reset?

--soft: Memindahkan HEAD ke commit yang ditentukan tetapi menjaga perubahan tetap staged untuk commit. --mixed (bawaan): Memindahkan HEAD ke commit yang ditentukan dan membatalkan staging perubahan (working directory tetap utuh). --hard: Memindahkan HEAD ke commit yang ditentukan dan membuang semua perubahan di indeks dan working directory.

Topik
Git
Terkait

blogs

Tutorial Korelasi di R

Dapatkan pengenalan dasar-dasar korelasi di R: pelajari lebih lanjut tentang koefisien korelasi, matriks korelasi, plotting korelasi, dan sebagainya.
David Woods's photo

David Woods

13 mnt

blogs

Spaghetti Plot dan Jalur Badai

Temukan alasan mengapa Anda sebaiknya (tidak) menggunakan spaghetti plot untuk menyampaikan ketidakpastian jalur prediksi badai serta dampaknya terhadap interpretasi.
Hugo Bowne-Anderson's photo

Hugo Bowne-Anderson

13 mnt

blogs

12 Alternatif ChatGPT Terbaik yang Bisa Anda Coba pada 2026

Artikel ini menyajikan daftar alternatif ChatGPT yang akan meningkatkan produktivitas Anda.
Javier Canales Luna's photo

Javier Canales Luna

14 mnt

blogs

40 Pertanyaan Wawancara DBMS Teratas di 2026

Kuasai pertanyaan wawancara basis data, dari konsep SQL dasar hingga skenario desain sistem tingkat lanjut. Panduan mendalam ini mencakup semua yang Anda perlukan untuk sukses di wawancara DBMS dan meraih peran berikutnya.
Dario Radečić's photo

Dario Radečić

15 mnt

Lihat SelengkapnyaLihat Selengkapnya