Dipublikasikan 8 Juni 2026
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.
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.
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.
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
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.
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:
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
git merge --abort: Batalkan merge jika conflict terlalu kompleks:
git merge --abort
git diff --name-only --diff-filter=U: Lihat file yang masih conflict:
git diff --name-only --diff-filter=U
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"
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
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
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.
Dapatkan feedback, users, dan eksposur dari komunitas kreator, developer, dan entrepreneur digital Indonesia.
Submit Produk → Pelajari Dulu