
Foto oleh Zulfugar Karimov via Pexels
Setelah memahami konsep dasar Git, langkah selanjutnya adalah menguasai perintah-perintah inti yang dipakai sehari-hari: add untuk menandai perubahan, commit untuk menyimpannya secara permanen, push untuk mengirim perubahan ke repository remote, dan pull untuk mengambil perubahan terbaru dari remote.
Memahami alur kerja perintah-perintah ini bukan sekadar menghafal sintaksnya, melainkan memahami apa yang sebenarnya terjadi di balik layar pada ketiga area kerja Git (working directory, staging, repository) setiap kali perintah tersebut dijalankan.
Artikel ini membahas penggunaan praktis git add, commit, push, dan pull, termasuk variasi perintah yang berguna seperti commit dengan pesan yang baik dan menangani konflik sederhana saat melakukan pull.
Git Add untuk Staging Perubahan
Berbagai variasi git add untuk kontrol staging yang berbeda
Git Commit dengan Pesan yang Baik
Pesan commit yang deskriptif memudahkan penelusuran riwayat
Git Push ke Repository Remote
Push mengirim commit lokal ke repository remote
Git Pull untuk Mengambil Perubahan Terbaru
Pull adalah kombinasi fetch dan merge dalam satu perintah
Mengelola Perubahan yang Belum Siap Commit dengan Git Stash
Menyimpan sementara perubahan yang belum selesai untuk berpindah branch
Git stash berguna ketika sedang mengerjakan perubahan di suatu branch namun perlu berpindah ke branch lain untuk mengerjakan sesuatu yang mendesak, sementara perubahan saat ini belum siap untuk di-commit. Perintah git stash save menyimpan seluruh perubahan pada working directory ke tumpukan sementara dan mengembalikan working directory ke kondisi bersih sesuai commit terakhir.
Perubahan yang sudah di-stash bisa dikembalikan kapan saja dengan git stash pop, yang akan menerapkan kembali perubahan tersebut sekaligus menghapusnya dari tumpukan stash. Jika ingin menerapkan perubahan tanpa menghapusnya dari stash, bisa memakai git stash apply, yang berguna ketika perubahan yang sama ingin diterapkan ke lebih dari satu branch.
Git Bisect untuk Mencari Commit Penyebab Bug Secara Sistematis
Binary search otomatis lewat git bisect untuk menemukan commit penyebab bug
Mencari commit mana yang menyebabkan bug muncul di antara ratusan commit bisa sangat memakan waktu jika dilakukan dengan membaca riwayat satu per satu. Git bisect menyediakan mekanisme binary search otomatis: cukup menandai satu commit yang diketahui bermasalah (bad) dan satu commit yang diketahui masih normal (good), Git akan memilih commit tepat di tengah rentang tersebut untuk diuji. Teknik ini jauh lebih efisien dibanding memeriksa commit satu per satu secara berurutan dari awal sampai akhir riwayat.
Pada setiap commit yang di-checkout otomatis oleh Git, developer menjalankan pengujian manual atau otomatis untuk memastikan apakah bug sudah muncul pada titik tersebut, lalu melaporkan hasilnya kembali lewat git bisect good atau git bisect bad. Proses ini berulang dengan rentang pencarian yang terus dipersempit separuh setiap kali, sehingga menemukan commit penyebab di antara seribu commit hanya membutuhkan sekitar sepuluh kali pengujian saja. Hasil akhir bisect berupa satu commit tunggal yang bisa langsung dianalisis lebih lanjut untuk memahami perubahan apa yang memicu bug.
Git bisect juga mendukung mode run yang menerima script pengujian otomatis sebagai argumen, sehingga seluruh proses bisa berjalan tanpa campur tangan manual sama sekali, cocok dipakai bersama test suite otomatis yang mengembalikan exit code berbeda untuk kondisi lulus dan gagal. Setelah commit penyebab ditemukan, git bisect reset wajib dijalankan untuk mengembalikan repository ke branch semula sebelum proses bisect dimulai. Kombinasi git bisect run dengan test otomatis membuat proses pencarian bug bisa dijalankan tanpa pengawasan, bahkan saat developer mengerjakan tugas lain.
Menyelamatkan Commit yang Hilang lewat Git Reflog
Reflog mencatat setiap perpindahan HEAD, termasuk sebelum reset dijalankan
Git reflog mencatat setiap perpindahan posisi HEAD pada repository lokal, termasuk saat commit dibuat, branch dipindah, atau reset dijalankan, bahkan untuk commit yang sudah tidak terlihat lagi di git log biasa. Catatan ini bersifat lokal dan tidak ikut terkirim saat push, namun sangat berguna untuk memulihkan pekerjaan yang tampak hilang akibat kesalahan perintah seperti git reset --hard yang keliru.
Dengan melihat daftar reflog, posisi commit sebelum perintah yang bermasalah dijalankan bisa ditemukan lewat hash commit yang masih tercatat, lalu dipulihkan kembali memakai git reset ke hash tersebut. Reflog memiliki masa retensi terbatas secara default sekitar sembilan puluh hari, sehingga bukan pengganti backup permanen, melainkan jaring pengaman untuk kesalahan yang baru saja terjadi.
Kesalahan Umum yang Sering Terjadi
Melupakan Git Add Sebelum Commit
Menjalankan git commit tanpa git add terlebih dahulu untuk perubahan baru akan menghasilkan commit yang kosong atau tidak menyertakan perubahan yang dimaksud, karena commit hanya menyimpan apa yang sudah ada di staging area.
Menulis Pesan Commit yang Tidak Informatif
Pesan commit seperti 'update', 'fix', atau 'asdf' tidak memberikan informasi apa pun tentang perubahan yang dilakukan, menyulitkan tim (termasuk diri sendiri) memahami riwayat project ketika perlu ditelusuri di kemudian hari.
Melakukan Push Tanpa Pull Terlebih Dahulu
Mencoba push ketika branch remote sudah memiliki commit baru yang belum ada di lokal akan ditolak Git, mengharuskan pull terlebih dahulu untuk menggabungkan perubahan remote sebelum push bisa berhasil dilakukan.
Kapan Pendekatan Ini Tidak Cocok Dipakai
Melakukan commit secara sering dengan perubahan kecil memudahkan penelusuran riwayat dan rollback yang presisi, namun bisa menghasilkan riwayat commit yang sangat panjang dan berantakan jika tidak dikelola dengan baik.
Melakukan commit jarang dengan perubahan besar sekaligus menghasilkan riwayat yang lebih ringkas, namun menyulitkan jika perlu rollback sebagian kecil perubahan saja tanpa membatalkan seluruh perubahan besar yang tergabung dalam satu commit tersebut.
Ringkasan
Perintah dasar Git, add, commit, push, dan pull, membentuk alur kerja inti yang dipakai setiap hari oleh developer yang memakai version control. Biasakan menulis pesan commit yang deskriptif dan pahami apa yang sebenarnya terjadi pada ketiga area kerja Git setiap kali perintah tersebut dijalankan.
Seri Belajar Git & CI/CD:
← Sebelumnya: Pengenalan Git dan Version Control System
→ Selanjutnya: Branching Strategy dan Git Flow