Dari Sekadar Commit & Push: Tips Git yang Bikin Workflow Kamu Jauh Lebih Optimal
Kalau kamu sudah pakai Git selama beberapa tahun tapi masih berkutat di git add, git commit, dan git push — artikel ini untuk kamu.
Bukan berarti itu salah. Tapi Git punya banyak fitur yang, begitu kamu tahu dan terbiasa, akan terasa seperti superpowerdalam pekerjaan sehari-hari. Terutama kalau kamu kerja dalam tim, sekecil apapun itu.
1. Branching Strategy yang Tidak Bikin Pusing
Salah satu sumber chaos paling umum di tim kecil adalah tidak adanya kesepakatan soal branching. Semua orang commit langsung ke main, atau punya konvensi branch yang berbeda-beda.
Untuk tim kecil (2–5 orang), GitHub Flow adalah pilihan terbaik — cukup simpel untuk tidak membebani, tapi cukup terstruktur untuk menghindari kekacauan.
Strukturnya sederhana:
main → selalu production-ready, selalu stabil
feature/xxx → untuk fitur baru
fix/xxx → untuk bug fix
hotfix/xxx → perbaikan mendesak di production
Aturan mainnya:
- Branch
maintidak pernah di-commit langsung - Setiap pekerjaan baru = branch baru yang dibuat dari
mainyang fresh - Selesai → Pull Request → review → merge → hapus branch
# Cara yang benar: selalu mulai dari main yang up-to-date
git checkout main && git pull origin main
git checkout -b feature/athlete-export
Sederhana, tapi konsistensi di sini yang membuat perbedaan besar jangka panjang.
2. Commit Message yang Bermakna
Coba buka riwayat commit proyekmu sekarang. Apakah kamu bisa tahu apa yang terjadi 3 bulan lalu hanya dari membaca commit message-nya?
Kalau jawabannya tidak — saatnya adopsi Conventional Commits. Formatnya:
<type>(<scope>): <deskripsi singkat>
| Type | Kapan dipakai |
|---|---|
feat |
Menambahkan fitur baru |
fix |
Memperbaiki bug |
refactor |
Mengubah struktur kode tanpa mengubah behavior |
chore |
Update dependency, konfigurasi, hal-hal non-fungsional |
docs |
Perubahan dokumentasi |
Contoh nyata:
git commit -m "feat(export): add PDF generation for athlete KTA card"
git commit -m "fix(settings): logo not persisting when value is null"
git commit -m "refactor(athlete): extract KTA logic into dedicated service class"
Dibandingkan dengan fix bug, coba lagi, atau update — perbedaannya langsung terasa saat kamu atau rekan timmu perlu menelusuri history di kemudian hari.
3. Bersihkan History Sebelum Merge dengan Interactive Rebase
Selama develop, wajar banget kalau commit-mu jadi berantakan:
wip: tambah form export
fix typo
lupa validasi
ok sekarang beneran fix
Sebelum melakukan Pull Request, bersihkan dulu dengan interactive rebase:
# Gabungkan 4 commit terakhir menjadi 1
git rebase -i HEAD~4
Di editor yang muncul, ubah pick menjadi squash (atau cukup s) pada commit-commit yang ingin digabungkan. Hasilnya, branch kamu hanya punya satu commit yang bersih dan bermakna saat masuk ke main.
Penting: Hanya lakukan rebase di branch milikmu sendiri yang belum di-share ke orang lain. Jangan rebase branch yang sudah di-push dan dipakai bersama.
4. Cegah Konflik Merge Sebelum Terjadi
Konflik merge biasanya bukan soal nasib buruk — tapi soal branch yang terlalu lama tidak sync dengan main. Bangun kebiasaan ini:
# Lakukan setiap pagi sebelum mulai coding
git fetch origin
git rebase origin/main
Kenapa rebase dan bukan merge? Karena rebase membuat history tetap linear — tidak ada "merge commit" yang tidak perlu dan history jadi jauh lebih mudah dibaca.
Kalau konflik sudah terlanjur terjadi, tanganinya seperti ini:
git status # lihat file mana yang konflik
# buka file, selesaikan konflik secara manual
git add <file>
git rebase --continue # lanjutkan proses rebase
5. Rollback & Undo — Tanpa Panik
Ini salah satu hal yang paling sering bikin developer keringat dingin. Tapi sebenarnya Git punya alat yang tepat untuk setiap situasi:
| Situasi | Perintah |
|---|---|
| Batalkan perubahan di file (belum di-stage) | git restore <file> |
| Unstage file (belum commit) | git restore --staged <file> |
| Edit commit terakhir (belum push) | git commit --amend |
| Undo commit terakhir, tapi simpan perubahannya | git reset --soft HEAD~1 |
| Undo commit terakhir + buang perubahannya | git reset --hard HEAD~1 |
| Undo commit yang sudah di-push ke shared branch | git revert <commit-hash> |
Aturan paling penting: kalau commit sudah push ke branch yang dipakai bersama, selalu gunakan git revert. Perintah ini membuat commit baru yang membalikkan perubahan — aman karena tidak mengubah history yang sudah ada.
6. Alias CLI untuk Efisiensi Sehari-hari
Beberapa alias berikut ini kecil tapi dampaknya terasa setiap hari. Tambahkan ke ~/.gitconfig:
git config --global alias.lg "log --oneline --graph --decorate --all"
git config --global alias.st "status -s"
git config --global alias.undo "reset --soft HEAD~1"
git config --global alias.unstage "restore --staged"
Setelah ini, kamu bisa pakai:
git lg # visualisasi graph history yang jauh lebih readable
git st # status ringkas, tidak perlu scroll panjang
git undo # batalkan commit terakhir dengan aman
git unstage # keluarkan file dari staging area
git lg khususnya adalah salah satu alias yang, begitu kamu coba, tidak akan mau balik ke git log biasa lagi.
7. Tandai Release dengan Git Tag
Kalau proyekmu punya siklus release, biasakan menggunakan tag:
git tag -a v1.2.0 -m "Release: KTA export dengan QR code"
git push origin --tags
Tag memberi kamu anchor point yang jelas di history — sangat berguna saat perlu melacak kapan fitur tertentu masuk production, atau saat perlu rollback ke versi sebelumnya.
Mulai dari Mana?
Tidak perlu langsung menerapkan semuanya sekaligus. Kalau harus pilih tiga hal untuk dicoba hari ini:
- Pakai konvensi penamaan branch — mulai dengan
feature/danfix/dari sekarang - Pasang alias
git lg— ini langsung mengubah cara kamu memahami history proyekmu - Biasakan
git fetch+git rebase origin/mainsetiap pagi sebelum mulai kerja
Tiga kebiasaan kecil ini saja sudah cukup untuk membuat workflow kamu — dan tim kamu — jauh lebih rapi dan terkontrol.
Punya tips Git lain yang sering kamu pakai? Atau ada bagian yang ingin dibahas lebih dalam? Tinggalkan di kolom komentar.