1. Branch Itu Murah
# Membuat dan langsung berpindah git switch -c fitur/keranjang-belanja # Bentuk lama yang masih sangat umum git checkout -b fitur/keranjang-belanja # Berpindah antar branch git switch main git switch - # kembali ke branch sebelumnya # Melihat daftar branch git branch # lokal git branch -a # termasuk remote git branch -v # dengan commit terakhir tiap branch git branch --merged main # yang sudah tergabung ke main git branch --no-merged main # yang BELUM tergabung # Menghapus branch git branch -d fitur/lama # aman: menolak bila belum di-merge git branch -D fitur/lama # paksa, meski belum di-merge
fitur/nama-fitur atau feature/โฆ perbaikan/nama-bug atau fix/โฆ hotfix/masalah-produksi rilis/2.4.0 eksperimen/coba-grpc
Menyertakan nomor tiket sangat membantu penelusuran: fitur/PROJ-142-checkout-cepat.
2. Fast-Forward Merge
Terjadi bila branch tujuan tidak bergerak sama sekali sejak percabangan dibuat. Git tinggal memajukan penunjuk โ tidak ada commit baru yang dibuat.
Sebelum:
main AโโโB
\
fitur CโโโD
Setelah git switch main && git merge fitur:
main AโโโBโโโCโโโD
โ
fitur juga di sini
3. Three-Way Merge
Terjadi bila kedua branch sama-sama bergerak. Git mencari commit leluhur bersama, lalu menggabungkan kedua sisi dengan leluhur itu sebagai titik acuan.
Sebelum:
main AโโโBโโโEโโโF
\
fitur CโโโD
Setelah merge:
main AโโโBโโโEโโโFโโโM <-- M punya DUA induk: F dan D
\ /
fitur CโโโDโโโโ/
# Mencari leluhur bersama secara manual git merge-base main fitur # Melakukan merge git switch main git merge fitur # Memaksa merge commit meski sebenarnya bisa fast-forward git merge --no-ff fitur # Menggabungkan seluruh fitur menjadi SATU commit tanpa merge commit git merge --squash fitur git commit -m "feat: tambahkan keranjang belanja"
--no-ff
Dengan fast-forward, commit-commit fitur bercampur ke main dan Anda kehilangan informasi "commit-commit ini datang dari satu fitur yang sama". Dengan --no-ff, selalu ada merge commit yang menandai batas fitur, sehingga membatalkan seluruh fitur cukup dengan git revert -m 1 <merge-commit>. Banyak tim menjadikan ini kebijakan wajib untuk main.
4. Tiga Cara Menggabungkan, Tiga Bentuk Riwayat
| Cara | Bentuk riwayat | Cocok untuk |
|---|---|---|
Merge commit (--no-ff) | Bercabang, jejak fitur terlihat jelas | Tim besar, audit, fitur berumur panjang |
| Squash | Lurus, satu commit per pull request | Riwayat main yang sangat bersih; commit WIP dibuang |
| Rebase lalu fast-forward | Lurus, semua commit asli terjaga | Tim yang disiplin menulis commit atomik |
5. Melihat Bentuk Riwayat
git log --oneline --graph --decorate --all # Commit yang ada di fitur tapi belum ada di main git log main..fitur # Perbedaan dua arah sekaligus git log --left-right --oneline main...fitur # Siapa yang mengubah baris tertentu git blame -L 40,60 src/pembayaran.js # Melacak sebuah fungsi lintas perubahan nama berkas git log --follow -p -- src/pembayaran.js
6. Branch Lokal dan Remote
# Mendorong branch lokal sekaligus menyetel pelacakannya git push -u origin fitur/keranjang-belanja # Melihat hubungan lokal-remote git branch -vv # Mengambil perubahan remote TANPA menggabungkan git fetch origin # Membersihkan referensi remote yang sudah dihapus di server git fetch --prune # Menghapus branch di server git push origin --delete fitur/lama
git pull itu dua perintah sekaligus
git pull setara dengan git fetch lalu git merge, dan sering menghasilkan merge commit "Merge branch main ofโฆ" yang mengotori riwayat. Banyak tim menyetel git config --global pull.rebase true agar pull melakukan rebase. Kalau ragu, biasakan git fetch dulu, lihat apa yang datang, baru putuskan sendiri.