Lewati ke konten utama

Git Revert Merge Commit: Panduan dengan Contoh

Pelajari cara membatalkan merge Git dengan aman menggunakan `git revert`, mempertahankan riwayat commit dan menyelesaikan potensi konflik.
Diperbarui 28 Sep 2026  · 7 mnt Baca

Jelajahi bersama AI

ChatGPTClaudePerplexity

Aplikasi bisa terdampak akibat menggabungkan kode bermasalah, baik karena tanpa sengaja mengintegrasikan pekerjaan yang belum selesai ke dalam branch utama maupun luput dari bug kritis yang lolos dari pengujian otomatis.

Di artikel ini, saya akan memandu Anda menggunakan git revert untuk membatalkan merge dengan aman, memastikan riwayat commit tetap utuh dan integritas proyek terjaga.

Cara Kerja git revert

Kita bisa menganggap git revert sebagai versi perintah undo di Git. Namun, perintah git revert tidak menghapus commit atau melompat ke keadaan branch sebelumnya. Sebaliknya, perintah ini membuat commit baru yang membalik perubahan dari commit tertentu.

Illustrasi cara kerja git revert

Sintaks untuk membalik sebuah commit dengan hash <commit_hash> adalah:

git revert <commit_hash>

Kita bisa menampilkan daftar commit beserta pengenal hash-nya menggunakan perintah git log. Keluaran git log menampilkan commit dari yang terbaru hingga yang paling lama, seperti berikut:

Mengidentifikasi hash commit dengan git log

Misalnya, untuk membalik commit yang mengimplementasikan fungsi subtract, kita akan menggunakan perintah:

git revert 7ba24a3e62d4d37182428ccfaa070baa222b1151

Dengan menggunakan git revert kita bisa membatalkan perubahan dari commit tertentu tanpa memengaruhi riwayat commit.

Perlu dicatat bahwa git revert bukanlah sesuatu yang magis, dan bergantung pada riwayat commit, ini dapat menghasilkan konflik yang harus diselesaikan secara manual.

Keunggulan git revert Dibanding Perubahan Manual

Mengapa git revert berguna jika kita mungkin perlu menyelesaikan konflik secara manual? Bukankah lebih mudah langsung membatalkan perubahan secara manual? Mari kita lihat keunggulannya:

  • Melestarikan riwayat: git revert membuat commit baru yang membatalkan perubahan dari commit tertentu sambil mempertahankan seluruh riwayat commit. Ini membantu menjaga riwayat perubahan dan pembatalan yang transparan.
  • Pembalikan atomik: Memastikan pembalikan bersifat atomik dan konsisten. Saat kita menghapus dan melakukan commit perubahan secara manual, ada risiko kesalahan manusia.
  • Kewaspadaan terhadap konflik: Memastikan kita diberi tahu melalui konflik jika ada integrasi atau perubahan yang bergantung pada commit asli. Ini mungkin terasa tidak nyaman, tetapi melindungi dari efek samping yang tidak diinginkan.
  • Metadata: Commit baru yang dibuat oleh git revert menyertakan metadata dan pesan commit yang menjelaskan secara kontekstual apa yang dibalik, sehingga membantu pemahaman di masa mendatang. Tanpa git revert, konteks ini bisa hilang.

Membalik Sebuah Merge dalam Berbagai Skenario

Di bagian ini, kita mempelajari cara membatalkan merge. Demi contoh, kita mengasumsikan kita menggabungkan branch bernama feature ke branch main dengan mengeksekusi perintah dari branch main:

git merge feature

Apa yang kita pelajari di sini dapat diterapkan pada dua branch apa pun dengan mengganti namanya secara tepat.

Membalik merge yang tidak memiliki commit terkait

Perintah git merge tidak selalu membuat commit baru. Commit hanya dibuat jika branch main telah menyimpang dari branch feature. Karena git revert memerlukan sebuah commit untuk dijalankan, kita tidak bisa menggunakannya dalam kasus ini.Penjelasan tentang cabang Git yang menyimpang

Branch main dan feature dianggap menyimpang ketika commit baru dibuat di main yang bukan merupakan leluhur dari branch feature. Dengan kata lain, commit baru dibuat di main setelah feature dibuat.

Jika branch belum menyimpang, saat kita menjalankan perintah git merge feature pada branch main, Git akan menggunakan fast-forward untuk melakukan merge. Ini berarti Git memindahkan HEAD dari branch main ke HEAD dari branch feature.

Illustrasi tentang apa yang terjadi saat kita memindahkan HEAD dari <code data-mce-selected=

Kita dapat mengamati bahwa ini terjadi dengan melihat hasil dari git merge:

Cara mengidentifikasi bahwa Fast-forward digunakan untuk merge

Untuk membatalkan merge seperti ini, kita hanya perlu memindahkan HEAD dari branch main kembali ke posisi semula. Untuk itu, kita:

  1. Mengidentifikasi HEAD sebelumnya menggunakan git reflog
  2. Mereset HEAD ke posisi sebelumnya menggunakan git reset --hard <previous_head>, mengganti <previous_head> dengan HEAD sebelumnya.

Keluaran git reflog akan terlihat seperti ini:

Menemukan referensi HEAD lama

Kita bisa mengidentifikasi HEAD sebelumnya dengan melihat baris yang bertuliskan “checkout: moving from feature to main” (tertulis feature dan main karena itu adalah nama branch kita).

Dalam kasus ini, head sebelumnya adalah fe59838. Untuk memindahkan HEAD dari branch main kembali ke sana dan membatalkan merge, kita gunakan perintah:

git reset --hard fe59838

Ilustrasi apa yang terjadi saat kita memindahkan HEAD kembali

Membalik merge yang memiliki commit terkait

Jika branch main dan feature sudah menyimpang, maka saat kita menggabungkan dua branch, sebuah commit baru akan dibuat, yang disebut merge commit.

Ilustrasi sebuah merge commit

Merge commit menerapkan perubahan dari satu branch ke branch lainnya. Dalam kasus ini, perubahan di feature diterapkan ke branch main.

Untuk membalik perubahan pada branch main, kita menggunakan git revert pada merge commit tersebut. Ini akan membuat commit baru yang membatalkan perubahan yang dibawa ke branch main melalui merge, sehingga secara efektif mengembalikan keadaan branch main seperti sebelum merge.

Pertama, kita perlu mengidentifikasi hash dari merge commit. Kita bisa melakukannya menggunakan perintah git log:

Mengidentifikasi hash merge commit

Karena merge commit memiliki dua induk (parent), sintaks git revert sedikit berbeda. Kita perlu menggunakan opsi -m 1 untuk menyatakan bahwa kita ingin membalik perubahan relatif terhadap branch main:

git revert -m 1 b8dab2c8611e324ed0d273133987415350e6d10d

Ilustrasi apa yang terjadi saat kita membalik sebuah git merge commit

Penyelesaian Konflik Saat Membalik Commit

Terkadang, konflik dapat muncul saat membalik commit, khususnya jika commit yang dibalik bertentangan dengan perubahan setelahnya di basis kode. Dalam kasus seperti itu:

  1. Git akan menjeda proses revert: Kita perlu menyelesaikan konflik secara manual. Git akan menandai file yang berkonflik dan memerlukan intervensi.
  2. Seleseikan konflik: Buka setiap file yang berkonflik, selesaikan konflik yang ditandai Git, lalu simpan perubahan.
  3. Stage file yang sudah diselesaikan: git add <file-path>
  4. Lanjutkan proses revert: git revert --continue

Kesimpulan

Menggunakan git revert untuk membatalkan merge commit memastikan setiap perubahan dan koreksi terdokumentasi dalam riwayat commit.

Selain itu, memahami skenario yang tepat untuk menerapkan git reset versus git revert membantu kita membuat keputusan yang lebih baik, khususnya saat mempertimbangkan alur kerja kolaboratif atau perubahan yang hanya bersifat lokal.

Anda dapat membaca lebih lanjut tentang topik ini di bagian FAQ di bawah. Jika Anda ingin mempelajari Git lebih jauh, saya merekomendasikan sumber berikut:

FAQs

Bisakah saya membalik merge yang sudah dipush dengan git revert?

Ya, itu adalah kasus penggunaan utama git revert pada merge. Jika perubahannya masih lokal maka git reset adalah cara yang lebih mudah untuk membatalkan merge.

Agar orang lain dapat melihat perubahan, kita perlu mendorong (push) perubahan tersebut ke repository remote. Jadi, untuk membatalkan merge yang sudah dipush, kita lakukan:

git revert -m 1 <merge_commit_hash>
git push origin <branch_name>

Ganti <merge_commit_hash> dengan hash dari merge commit dan <brach_name> dengan nama branch tempat merge dilakukan.

Apakah merge commit akan dihapus setelah menggunakan git revert?

Tidak. Merge commit tetap ada dalam riwayat, tetapi perubahannya dibatalkan oleh commit baru. Tujuan utama membatalkan merge dengan git revert adalah untuk mempertahankan riwayat commit.

Apakah ada cara selain git revert untuk membatalkan merge?

Cara alternatif untuk membatalkan merge adalah menggunakan git reset. Metode ini me-reset branch ke keadaan sebelum merge commit. Pendekatan ini lebih invasif dan dapat menimbulkan masalah jika kolaborator lain sudah mendasarkan pekerjaan mereka pada commit yang akan kita reset. Karena itu, disarankan hanya saat kita yakin tidak akan memengaruhi orang lain.

git reset --hard <commit_hash>
git push --force

Ganti <commit_hash> dengan hash dari commit yang ingin kita kembalikan.

Kapan saya harus menggunakan git reset untuk membatalkan merge?

Saya merekomendasikan menggunakan git reset untuk membatalkan merge hanya ketika merge terjadi secara lokal dan belum dipush.


François Aubry's photo
Author
François Aubry
LinkedIn
Insinyur full-stack & pendiri di CheapGPT. Mengajar selalu menjadi passion saya. Sejak masa awal sebagai mahasiswa, saya aktif mencari peluang untuk membimbing dan membantu mahasiswa lain. Passion ini mendorong saya menempuh studi PhD, di mana saya juga menjadi asisten pengajar untuk mendukung kegiatan akademik saya. Selama tahun-tahun itu, saya menemukan kepuasan besar dalam suasana kelas tradisional, membangun koneksi dan memfasilitasi proses belajar. Namun, dengan hadirnya platform pembelajaran daring, saya melihat potensi transformatif pendidikan digital. Bahkan, saya terlibat aktif dalam pengembangan salah satu platform tersebut di universitas kami. Saya sangat berkomitmen untuk mengintegrasikan prinsip-prinsip pengajaran tradisional dengan metodologi digital yang inovatif. Tujuan saya adalah menciptakan kursus yang tidak hanya menarik dan informatif, tetapi juga mudah diakses oleh para pembelajar di era digital ini.
Topik
Git

Kursus data engineering teratas

Program

Data Engineer dalam Python

40 jam
Dapatkan keterampilan yang sangat dicari untuk mengelola data dengan efisien, termasuk mengimpor, membersihkan, mengelola data, serta menjadwalkan dan memantau pipeline, sehingga Anda dapat menonjol di bidang data engineering.
Lihat DetailRight Arrow
Mulai Kursus
Lihat SelengkapnyaRight Arrow
Terkait

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

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

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