Tutorial Git Advanced: Master Rebase Interaktif dan Cherry-pick untuk Workflow Profesional
AW
Axel W

Dipublikasikan 8 Juni 2026

Tutorial Git Advanced: Master Rebase Interaktif dan Cherry-pick untuk Workflow Profesional

Git adalah version control system yang sudah menjadi standar industri untuk software development. Sebagian besar developer sudah familiar dengan perintah dasar seperti git add, git commit, git push, dan git pull. Namun, ketika bekerja dalam tim yang besar atau menangani proyek kompleks, perintah dasar sering kali tidak cukup.

Artikel ini akan membahas fitur Git advanced yang wajib dikuasai developer profesional: rebase interaktif, cherry-pick, reflog, dan teknik merge conflict resolution. Panduan ini berdasarkan dokumentasi resmi Git SCM dan tutorial advanced dari Atlassian, disusun dengan langkah praktis yang bisa langsung dicoba.

Mengapa Perlu Menguasai Git Advanced

Tim engineering yang bekerja paralel pada fitur berbeda akan menghasilkan branch yang bercabang dengan cepat. Tanpa manajemen branch yang baik, history repository bisa menjadi kacau dan sulit ditelusuri. Fitur advanced seperti rebase dan cherry-pick memungkinkan Anda mempertahankan history yang bersih, memindahkan commit secara selektif, dan memulihkan dari kesalahan dengan aman.

Menurut dokumentasi Git SCM, filosofi Git adalah menjadi cerdas dalam menentukan kapan merge resolution tidak ambigu, tetapi tidak mencoba terlalu cerdas dalam menyelesaikan conflict secara otomatis. Itulah sebabnya developer harus memahami tools yang tersedia untuk situasi yang lebih tricky.

Langkah 1: Interactive Rebase untuk History Bersih

Interactive rebase adalah perintah paling powerful untuk mengedit history commit. Anda bisa mengubah urutan commit, menggabungkan commit, mengedit pesan, atau bahkan menghapus commit yang tidak diperlukan.

Contoh kasus: Anda memiliki 5 commit di feature branch dengan pesan yang tidak deskriptif:

git log --oneline feature-branch
f7a2c1d fix bug
9e3b4a2 wip
a1c5d8e add feature
2b8f6c3 initial commit
4d3e7a9 test

Gunakan interactive rebase untuk membersihkan history:

git checkout feature-branch
git rebase -i HEAD~5

Git akan membuka editor dengan daftar commit:

pick 2b8f6c3 initial commit
pick a1c5d8e add feature
pick 9e3b4a2 wip
pick f7a2c1d fix bug
pick 4d3e7a9 test

# Commands:
# p, pick = use commit
# r, reword = use commit, but edit the commit message
# e, edit = use commit, but stop for amending
# s, squash = use commit, but meld into previous commit
# f, fixup = like "squash", but discard this commit's log message
# d, drop = remove commit

Ubah menjadi:

pick 2b8f6c3 initial commit
squash 9e3b4a2 wip
reword a1c5d8e add feature
fixup f7a2c1d fix bug
pick 4d3e7a9 test

Save dan close editor. Git akan menggabungkan commit, memungkinkan Anda menulis pesan commit baru yang lebih deskriptif.

Langkah 2: Cherry-Pick untuk Memindahkan Commit

Cherry-pick memungkinkan Anda mengambil satu atau beberapa commit dari branch lain dan menerapkannya ke branch saat ini. Ini sangat berguna untuk memindahkan bug fix dari hotfix branch ke development branch tanpa harus merge seluruh branch.

Contoh: bug fix sudah di-commit di hotfix branch, dan Anda ingin menerapkannya ke main:

# Identifikasi commit hash yang ingin dipindahkan
git log --oneline hotfix-branch
a3b5c7d fix critical login bug

# Checkout ke target branch
git checkout main

# Cherry-pick commit
git cherry-pick a3b5c7d

Jika terjadi conflict, Git akan memberi tahu Anda. Selesaikan conflict seperti biasa, lalu lanjutkan:

# Setelah resolve conflict
git add .
git cherry-pick --continue

Untuk cherry-pick multiple commit sekaligus:

git cherry-pick a3b5c7d^..f2e8d9a

Langkah 3: Menggunakan Reflog untuk Recovery

Reflog adalah safety net terbaik Git. Reflog mencatat setiap perubahan pada HEAD di repository lokal Anda. Ini termasuk commit, rebase, merge, dan checkout.

Contoh kasus: Anda melakukan reset dan kehilangan commit penting:

git reset --hard HEAD~3

Untuk melihat history perubahan dan menemukan commit yang hilang:

git reflog

# Output contoh:
4f2e8a1 HEAD@{0}: reset: moving to HEAD~3
a7c3b2d HEAD@{1}: commit: add payment integration
9e5f1a2 HEAD@{2}: commit: update API endpoints
2b8d4c6 HEAD@{3}: checkout: moving from feature to main

Untuk memulihkan ke commit sebelum reset:

git checkout a7c3b2d
git checkout -b recovered-branch
# atau
git reset --hard a7c3b2d

Reflog menyimpan history selama 90 hari secara default. Ini berarti Anda punya jendela waktu yang cukup lama untuk memulihkan dari kesalahan.

Langkah 4: Merge Conflict Resolution yang Efektif

Conflict akan terjadi ketika dua branch mengubah bagian yang sama dari file. Git menandai conflict dengan marker:

<<<<<<< HEAD
function calculate() {
    return oldLogic();
}
=======
function calculate() {
    return newLogic();
}>>>>>>> feature-branch

Untuk melihat conflict dengan lebih jelas, gunakan diff khusus:

git diff --check

Atau gunakan diff dengan fokus pada whitespace untuk memahami perubahan:

git diff -b

Tools yang bisa membantu resolve conflict:

  1. git merge-tool: Konfigurasi merge tool seperti VS Code, vimdiff, atau meld:

git config --global merge.tool vscode
git config --global mergetool.vscode.cmd "code --wait "
git mergetool
  1. git merge --abort: Batalkan merge jika conflict terlalu kompleks:

git merge --abort
  1. git diff --name-only --diff-filter=U: Lihat file yang masih conflict:

git diff --name-only --diff-filter=U

Langkah 5: Git Stash untuk Simpan Pekerjaan Sementara

Stash sering diabaikan, padahal sangat berguna untuk menyimpan perubahan yang belum di-commit saat Anda perlu beralih branch dengan cepat.

# Simpan perubahan dengan pesan deskriptif
git stash push -m "WIP: refactor authentication module"

# Lihat daftar stash
git stash list

# Apply stash tanpa menghapus
git stash apply stash@{0}

# Pop stash (apply dan hapus)
git stash pop

# Apply stash ke branch baru
git stash branch new-branch-name stash@{0}

Stash juga bisa menyimpan perubahan yang belum di-track:

git stash push -u -m "Simpan termasuk file baru"

Langkah 6: Bisect untuk Binary Search Bug

Git bisect adalah fitur powerful untuk menemukan commit mana yang memperkenalkan bug. Ini menggunakan binary search algorithm untuk efisiensi maksimal.

# Mulai sesi bisect
git bisect start

# Tandai commit saat ini sebagai broken
git bisect bad

# Tandai commit yang diketahui bekerja
git bisect good v1.2.0

Git akan checkout commit di tengah range. Anda tes aplikasi, lalu tandai:

# Jika commit ini masih broken
git bisect bad

# Jika commit ini bekerja
git bisect good

Git akan terus membagi range sampai menemukan commit pertama yang memperkenalkan bug. Setelah selesai, reset:

git bisect reset

Best Practices untuk Tim

Berikut strategi untuk menerapkan Git advanced dalam workflow tim:

  • Gunakan feature branch dengan nama deskriptif: feature/payment-integration

  • Rebase feature branch ke main sebelum merge untuk history linear

  • Hindari force push ke branch yang dibagikan; gunakan git push --force-with-lease sebagai alternatif yang lebih aman

  • Review commit message sebelum push; gunakan conventional commits untuk konsistensi

  • Backup reflog secara berkala dengan git reflog expire --expire=never --all

Kesimpulan

Menguasai Git advanced membedakan developer junior dari senior. Kemampuan untuk membersihkan history dengan rebase interaktif, memindahkan commit secara selektif dengan cherry-pick, dan memulihkan dari kesalahan dengan reflog adalah skill yang sangat dihargai di industri.

Mulai praktikkan teknik-teknik ini pada repository pribadi Anda sebelum menerapkannya di proyek tim. History Git yang bersih dan terstruktur dengan baik akan membuat code review lebih efisien dan onboarding anggota tim baru menjadi jauh lebih mudah.

Sumber utama artikel ini berdasarkan Git SCM: Advanced Merging dan Atlassian Git Tutorial: Advanced Overview. Untuk referensi lengkap, kunjungi dokumentasi resmi Git.