Commit message yang baik adalah tanda seorang developer yang profesional dan peduli terhadap timnya. Bayangkan kamu perlu melacak kapan sebuah bug diperkenalkan ke dalam kode, atau memahami alasan di balik perubahan yang dibuat dua bulan lalu. Riwayat commit yang ditulis dengan buruk โ penuh dengan pesan seperti "update", "fix", atau "asdfjkl" โ membuat pelacakan itu hampir mustahil. Artikel ini membahas cara menulis commit message yang informatif, konsisten, dan bermanfaat.
Mengapa Commit Message Penting?
Commit message bukan hanya catatan untuk dirimu sendiri. Ia adalah komunikasi dengan:
- Rekan tim yang harus memahami perubahanmu saat code review.
- Dirimu sendiri di masa depan ketika debug masalah yang muncul berbulan-bulan kemudian.
- Alat otomasi seperti changelog generator atau CI/CD pipeline yang membaca pesan commit.
Format Dasar Commit Message yang Baik
Commit message yang baik memiliki struktur:
<tipe>(<scope>): <deskripsi singkat>
[body opsional โ penjelasan lebih detail]
[footer opsional โ referensi issue/ticket]
Contoh lengkap:
feat(auth): menambahkan validasi token JWT pada middleware
Token sebelumnya tidak divalidasi masa berlakunya sehingga
token kadaluarsa masih bisa digunakan untuk akses endpoint.
Closes #142
Conventional Commits โ Standar Industri
Conventional Commits adalah spesifikasi pesan commit yang banyak diadopsi industri. Format utamanya adalah tipe(scope): deskripsi. Berikut tipe-tipe yang umum digunakan:
featโ Menambahkan fitur baru.fixโ Memperbaiki bug.docsโ Perubahan dokumentasi saja.styleโ Perubahan format/gaya kode (spasi, titik koma) tanpa mengubah logika.refactorโ Refaktor kode tanpa menambah fitur atau memperbaiki bug.testโ Menambah atau memperbaiki test.choreโ Tugas rutin seperti update dependensi, konfigurasi build.perfโ Peningkatan performa.ciโ Perubahan konfigurasi CI/CD.
Contoh Commit Message yang Benar
feat(user): menambahkan fitur upload foto profil
fix(cart): memperbaiki kalkulasi total harga saat ada diskon
docs(readme): memperbarui panduan instalasi untuk Windows
refactor(api): memisahkan logika validasi ke dalam service class
chore: memperbarui versi laravel dari 10 ke 11
test(auth): menambahkan unit test untuk proses login gagal
Aturan Dasar Penulisan Commit Message
- Gunakan imperatif untuk deskripsi singkat: "menambahkan", "memperbaiki", "menghapus" โ bukan "ditambahkan" atau "sudah diperbaiki".
- Baris pertama maksimal 72 karakter agar mudah terbaca di log.
- Pisahkan subject dan body dengan baris kosong jika perlu penjelasan lebih.
- Jelaskan "mengapa", bukan hanya "apa". Apa yang diubah terlihat dari diff โ yang tidak terlihat adalah alasannya.
- Satu commit, satu perubahan logis. Jangan gabungkan perbaikan bug dan penambahan fitur dalam satu commit.
Commit Message yang Buruk vs. Baik
Perbandingan pesan commit yang sebaiknya dihindari vs. yang lebih baik:
BURUK:
update
fix bug
asd
ubah warna tombol dan perbaiki login dan tambah halaman profile
BAIK:
style(button): mengubah warna tombol CTA menjadi biru primer
fix(auth): memperbaiki redirect setelah login gagal
feat(profile): menambahkan halaman edit profil pengguna
Menambahkan Referensi Issue atau Ticket
Jika timmu menggunakan issue tracker seperti GitHub Issues atau Jira, sertakan referensinya di footer commit:
fix(payment): memperbaiki error saat gateway timeout
Payment gateway mengembalikan status 503 namun aplikasi
tidak menanganinya dan langsung menampilkan error 500.
Fixes #234
Refs: PROJ-891
Di GitHub, kata kunci seperti Fixes, Closes, atau Resolves akan otomatis menutup issue yang direferensikan ketika commit tersebut di-merge ke branch utama.
Menggunakan git commit Tanpa Flag -m untuk Pesan Panjang
Untuk pesan yang lebih panjang dengan body, jalankan commit tanpa flag -m agar editor teks terbuka:
git commit
Git akan membuka editor default (biasanya Vim atau nano). Untuk mengubah editor default ke VS Code:
git config --global core.editor "code --wait"
Kesimpulan
Menulis commit message yang baik adalah kebiasaan kecil yang berdampak besar pada kualitas kolaborasi tim dan kemudahan pemeliharaan kode jangka panjang. Adopsi Conventional Commits sebagai standar, tuliskan alasan di balik perubahan, dan jaga setiap commit tetap fokus pada satu hal. Riwayat commit yang bersih dan informatif adalah salah satu tanda profesionalisme seorang developer yang benar-benar peduli terhadap timnya dan kualitas kodenya.